概念
索引是为了加速对表中数据行的检索而创建的一种分散的存储结构实现原理(B+树) 通俗点说类似于一本书的目录,通过目录可以快速查到你想要的数据。
索引的优缺点
优点: 大大缩短查询时间,加索引至少比普通查询快100倍
缺点: 索引的创建和维护需要时间,随着数量增减需要的时间也会增加
索引是需要占用物理空间的,(也就是常说的用空间换时间)表空间是有最大上限设置的 如果一个表有大量索引会更快的到达上限值
索引使用的注意事项
凡事都有利和弊 只有正确运用才能达到我们想要的结果运用索引要注意以下情况否则适得其反:
- 索引用在where条件经常使用的列
- 加索引列的内容不是唯一的几个值
- 加索引列的内容不要频繁变化
- 加索引列的值可以为null,并且可以有多null ,但不能存有重复的空字符串" "
- 对于创建多个列索引,如果不是一起使用的话,则查询时使用索引会不起作用,如 (创建索引A ,B 查询只查询了A )
- 模糊查询时 使用like 前面有百分号开头索引会失效
- 如果条件中or ,那么条件中带索引会失效,就是说必须作为条件的所有字段都必须带索引 ,建议不要使用or关键字
- 如果列类型是字符串,哪作为条件查询时该列的值一定用‘ ’引号引用起来,否则索引失效
索引分类
1.普通索引
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。
语句:
创建索引语句:
CREATE INDEX index_name ON table(column)
修改表时加索引语句:
ALTER TABLE table_name ADD INDEX index_name ON (column)
2.唯一索引
索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
创建唯一索引语句:
CREATE UNIQUE INDEX indexName ON table(column)
修改表时加索引语句:
ALTER TABLE table_name ADD UNIQUE indexName ON (column)
3.主键索引
是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引。
创建主键索引语句:
CREATE TABLE 'table' (
'id' int(11) NOT NULL AUTO_INCREMENT ,
PRIMARY KEY ('id')
);
4.复合索引(组合索引)
用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引) 查询时使用创建时第一个开始 索引才有效 使用遵循左前缀集合
复合语句:
ALTER TABLE `table` ADD INDEX indexName (name,xb,age);
到这里就总结完了,大家在使用索引时一点要考虑好了,修改性能和检索性能是互相矛盾的,切记一点要注意,有些地方可能不是很全面,望大家多多指教!