码迷,mamicode.com
首页 > 数据库 > 详细

sql的优化-索引

时间:2018-01-03 11:42:25      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:add   列表   主键   index   优化   目录   编码   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的优化-索引

标签:add   列表   主键   index   优化   目录   编码   sql   创建表   

原文地址:https://www.cnblogs.com/alisonGavin/p/8182349.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!