如何正确使用索引

tamoadmin 市场行情 2024-04-07 25 0

如何正确使用索引

在MySQL数据库中,索引是一种用于快速查找记录的数据结构,通过合理的使用索引可以大大提高系统的访问性能。以下是关于如何正确使用索引的一些关键点:

索引的特点和使用原则

索引的顺序:索引的顺序决定了索引数据的组织顺序,要想更高性能的检索数据,一定要尽可能的借助底层数据结构的特点来进行。

最左匹配原则:当一个索引中包含多个字段时,可以称之为组合索引。在匹配过程中会优先根据最左前面的字段进行匹配,然后再判断是否用到了索引字段,直到无法找到对应的索引字段,或者对应的索引被“破坏”。

唯一性原则:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

正确创建索引

使用自增长主键:能有效减少页分裂,对于缓存友好。系统分配给MySQL的内存有限,对于数据量比较多的数据库来说,通常只有一小部分数据在内存中,而大多数数据都在磁盘中。如果使用无序的主键,则会造成随机的磁盘IO,影响系统性能。

选择性高的列优先:在创建索引的时候通常要求将选择性高的列放在最前面。如果选择性不高,极端性情况下可能会扫描全部或者大多数索引,然后再回表,这个过程可能不如直接走主键索引性能高。

避免在列上创建过多的索引:索引本身也会占用一定的空间,并且维护一个索引时有一定的代码的,所以在满足需求的情况下一定要尽可能创建更少的索引。

如何正确使用索引

使用索引进行查询

全值匹配:全值匹配指的是和索引中的所有列进行匹配。

匹配最左前缀:匹配最左前缀是指优先匹配最左索引列。

匹配列前缀:匹配列值的开头部分。

匹配范围值:如查询用户名以feinik开头的所有用户,这里使用了索引的第一列。

注意事项

where查询条件中不包含索引列中的最左索引列,则无法使用到索引查询

即使where的查询条件是最左索引列,也无法使用索引查询用户名以feinik结尾的用户

如果where查询条件中有某个列的范围查询,则其右边的所有列都无法使用索引优化查询

索引的有效查询

全值匹配:全值匹配指的是和索引中的所有列进行匹配。

匹配最左前缀:匹配最左前缀是指优先匹配最左索引列。

匹配列前缀:指匹配列值的开头部分。

匹配范围值:如查询用户名以feinik开头的所有用户,这里使用了索引的第一列。

索引的限制

where查询条件中不包含索引列中的最左索引列,则无法使用到索引查询

即使where的查询条件是最左索引列,也无法使用索引查询用户名以feinik结尾的用户

如果where查询条件中有某个列的范围查询,则其右边的所有列都无法使用索引优化查询

索引的选择性

前缀索引要选择足够长的前缀以保证高的选择性,同时又不能太长

希望以上内容对你有所帮助!

追问

延伸阅读

参考资料为您提炼了 5 个关键词,查找到 11688 篇相关资料。

如何使用索引
索引的正确使用场景
索引的优缺点
正确使用索引的方法
如何正确利用索引