首页 > 数据库技术 > 详细

MySQL索引

时间:2017-04-05 15:30:22      阅读:157      评论:0      收藏:0      [点我收藏+]

MySQL 索引

1、概念:创建在数据表上,对表的一列或多列进行排序,用于提高查询速度。

 

2、每个表至少支持16条索引,不同引擎所支持的索引上限不同。

 

3、优点:

a) 只查询索引列。

b) 查询时O(1) (hash)O(logB(n)) (b-tree)复杂度。

 

4、缺点:创建、维护索引耗费时间。

 

5、索引分类

a) 普通索引:无任何显示条件。

b) 唯一性索引:索引的元素(值、value)必须是唯一的,不可出现重复。

c) 全文索引:只能创建在charvarchartext类型上,MyISAM引擎支持。

d) 单列索引:在单个字段(属性)上创建索引。

e) 多列索引:在多个字段(属性)上创建索引。

f) 空间索引:只能创建在geometrylinestringpolygon类型上,MyISAM引擎支持。

 

6、索引的设计原则

a) 使用唯一性索引,O(1)的查询复杂度。

b) 为经常需要排序、分组、联合的字段建立索引。

c) 严格限制索引数量,只建立必要的索引,删除无用的索引。

d) 使用数据量少的索引(字段的长度越小越好)。

e) 如果字段长度很大,使用前缀索引。

 

7、创建表时,直接创建索引。

CREATE TABLE 表名 (属性名 数据类型 [完整性约束],

  属性名 数据类型 [完整性约束],

  ... ...

  属性名 数据类型 [完整性约束],

  [UNIQUE | FULLTEXT | SPATIAL]
      INDEX | KEY

  [索引名]

  (属性名1[(长度)] [ASC | DESC])

  );

UNIQUE:唯一性索引

FULLTEXT:全文索引

SPATIAL:空间索引

INDEX | KEY:指定字段为索引字段,INDEXKEY作用相同

索引别名:字面上的意思

(属性名1[(长度)] [ASC | DESC]):指定要索引的列,ASC为正序,DESC为倒序

 

8、 在已有的表上创建索引

a) 方法1

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名

ON 表名(属性名 [(长度)] [ASC | DESC]);

b) 方法2

ALTER TABLE 表名 ADD [UNIQUE | FULLTEXT | SPATIAL] INDEX

索引名(属性名 [(长度)] [ASC | DESC]);

 

9、删除索引

DEOP INDEX 索引名 ON 表名;

MySQL索引

原文:http://www.cnblogs.com/vrg0/p/6668853.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!