美文网首页
MYSQL索引使用注意事项

MYSQL索引使用注意事项

作者: 菜鸟小玄 | 来源:发表于2017-10-11 11:11 被阅读0次

1.索引列不要使用函数和运算


2. 尽量避免使用 != 或 not in或 <> 等否定操作符


3.当查询条件为多个的时候,可以采用复合索引


4.范围查询对多列查询的影响


   查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找。

举个例子,假设有一个场景需要查询本周发布的资讯文章,其中的条件是必须是启用状态,且发布时间在这周内。那么,SQL 语句可以写成:

select*fromnewswherepublish_time >='2017-01-02'andpublish_time <='2017-01-08'andenable=1

这种情况下,因为范围查询对多列查询的影响,将导致 news_publish_idx(publish_time, enable) 索引中 publish_time 右边所有列都无法使用索引优化查找。换句话说,news_publish_idx(publish_time, enable) 索引等价于 news_publish_idx(publish_time) 。

对于这种情况,我的建议:对于范围查询,务必要注意它带来的副作用,并且尽量少用范围查询,可以通过曲线救国的方式满足业务场景。

5.遵循最左匹配原则


   复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。因此,在复合索引中索引列的顺序至关重要。如果不是按照索引的最左列开始查找,则无法使用索引。

6.索引列不会包含NULL值


7.尽量避免使用 or 来连接条件


8.隐式转换的影响


   当查询条件左右两侧类型不匹配的时候会发生隐式转换,隐式转换带来的影响就是可能导致索引失效而进行全表扫描。下面的案例中,date_str 是字符串,然而匹配的是整数类型,从而发生隐式转换。

select*fromnewswheredate_str =201701

9.like 语句的索引失效问题


like 的方式进行查询,在 like "value%" 可以使用索引,但是对于 like "%value%" 这样的方式,执行全表查询,这在数据量小的表,不存在性能问题,但是对于海量数据,全表扫描是非常可怕的事情。所以,根据业务需求,考虑使用

相关文章

  • 数据库

    • MySQL 索引使用的注意事项 MySQL 索引使用的注意事项 索引不会包含有NULL值的列使用短索引...

  • Java面试要点-数据存储-精简答案

    MySQL 索引使用的注意事项 索引的目的在于提高查询效率。可以类比字典,如果要查“mysql”这个单词,我们肯定...

  • Mysql面试题

    文章目录 MySQL 索引使用有哪些注意事项呢?索引哪些情况会失效索引不适合哪些场景 MySQL 遇到过死锁问题吗...

  • 5.2MySQL创建高性能索引考察点

    MySQL索引的基础和类型延伸:MySQL索引的创建原则延伸:MySQL索引的注意事项 索引的基础索引类似于书籍的...

  • MySQL的 相关知识终结(学习笔记)

    1、MySQL 索引使用的注意事项更新频繁的列不需要设置索引数据量较小的表不需要索引重复数据较多的字段比如说性别,...

  • mysql索引注意事项以及关键字优化

    笔者所有文章第一时间发布于:hhbbz的个人博客 MySQL 索引使用的注意事项 索引不会包含有NULL的列只要列...

  • MYSQL索引使用注意事项

    1.索引列不要使用函数和运算 2. 尽量避免使用 != 或 not in或 <> 等否定操作符 3.当查询条件为多...

  • 索引(二)

    mysql索引的新手入门详解mysql索引之三:索引使用注意规则 索引(Index)是帮助 MySQL 高效获取数...

  • mysql查询时强制或者禁止使用某个索引

    mysql强制索引和禁止某个索引 1、mysql强制使用索引:force index(索引名或者主键PRI)例如:...

  • MySQL部门培训-索引篇

    章节目录 MySQL索引学习路径 MySQL索引介绍 索引分类 索引建立技巧 小试牛刀-索引使用预判 explai...

网友评论

      本文标题:MYSQL索引使用注意事项

      本文链接:https://www.haomeiwen.com/subject/yhoiyxtx.html