1.什么是索引
索引是一种特殊的数据库结构,有数据表中的一列或者多列组合而成,可以快速查询数据表中的值,相当于图书的目录,根据目录的页码快速找到所需内容
2.建立索引的原则
查询更快,占用空间小
1.定义主键的数据列一定要建立索引
2.定义有外键的数据列一点要建立索引
3.对于经常查询的数据列建立索引
4.对于需要在指定范围内的快速或频繁查询的数据列
5.经常用where字句中的数据列
6.经常出现在关键字order by、group by、distinct后面的字段,建立索引。如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
7.查询中很少涉及的列,重复值比较多的列不要建立索引
8.对于定义为text、image和bit、的数据类型的列不要建立索引
9.经常存取的列不要建立
10.限制索引数目,索引数一般不超过3个,最多不超过5个。索引提高了访问速度,但太多索引会影响数据的更新
3.有那些索引,分别解释
1.普通索引:普通索引是最基本的索引,它没有任何限制,值可以为空,仅加速查询
2.唯一性索引:唯一索引与普通索引类似,不同:索引列的值必须唯一,允许有空值。如果是组合索引,则列值得组合必须唯一
3.全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配
4.单列索引(主键):是一种特殊的唯一索引,一个表只能有一个主键,不允许有空置。
5.多列索引(组合):在多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合
4.那些情况下索引无法起作用
1.对列进行计算或者是使用函数,则该列索引失效
2.不匹配数据类型
3.where语句中使用 IS NULL 或者IS NOT NULL
4.使用了反向操作
5.使用link操作
6.在where中使用OR时,有一个列没有索引,那么其他列的所有将不起作用
5.使用索引的注意事项
1.不要再列上使用函数和进行运算,引起失效
2.尽量避免使用or来连接条件,导致索引失效进行全表扫描
3.in走索引,not in索引失效
4.单列索引和复合索引。尽量使用复合索引,而少使用单列索引
5.如果mysql评估使用索引比全表更慢。则不使用索引
6.范围查询右边的列,不能使用索引
7.尽量使用覆盖索引,避免select * 尽量使用覆盖索引(只访问索引的查询(引列完全包含查询列)),减少select *。查询列超过索引列也会降低效率
8.最左前缀法则如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列
9.is Null,is Not NULL有时索引失效
10.以%开头的Like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,引失效。
11.全值匹配,对索引中所有列都指定具体值。改情况下,索引生效,执行效率高。
6.什么情况下需要使用索引
(1)列经常被用于where条件中
(2)列中有大量的空值
(3)表几乎没有被修改
(4)数据量很大,只有2-4%的数据被选出来
————————————————
版权声明:本文为优快云博主「Qinꦿ.๓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_47541976/article/details/125980138
MySQL 索引使用有哪些注意事项呢?(从六个方面回答)
最新推荐文章于 2025-02-23 15:23:06 发布