sql的优化-索引

Posted AlisonGavin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql的优化-索引相关的知识,希望对你有一定的参考价值。

什么是索引?索引的定义是如何,在你的项目中用来了索引吗?

索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。

索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

定义:

分为普通索引, 唯一索引, 主键索引

普通索引

创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);

修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);

创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );
 drop  index <索引名>
 

唯一索引是不允许其中任何两行具有相同索引值的索引。

创建唯一索引的几种方式:
创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );
 
主索引,数据库表中一列或列组合(字段)的值唯一标识表中的每一行。该列称为表的主键
 
项目中是否用到索引?
conut(*),该查询语句在表中有索引的情况下,会用到索引。SQL优化器在底层会查找索引或者主键count(pk_name),
所以在数据库中count(*)在有主键的情况下,速度会比没有主键的情况下快。
 
count(1)和count(*)的区别, 
在没有索引或者主键的情况下, count(1)比count(*)要快, 应为count(*),此时会查找所有的列。
在有索引或者主键的情况下,count(1)和count(*)都一样快,都会查找索引。
 
在生产项目与门户项目集成时,用到了唯一性索引,unique index, 在集团编码列上用唯一性索引,此时主要提高查询速度。
 

 

以上是关于sql的优化-索引的主要内容,如果未能解决你的问题,请参考以下文章

SQL优化(二)

基于MySQL 的 SQL 优化总结

MySQL之SQL优化详解

MySQL(十六)索引优化:索引失效的情况分析

sql索引优化

mysql索引优化和sql语句优化