mysql索引失效

没有查询条件,或者查询条件没有建立索引

在查询条件上没有使用引导列

查询的数量是大表的大部分,应该是30%以上。

索引本身失效

查询条件使用函数在索引列上,或者对索引列进行运算,运算包括(+,-,*,/,! 等) 错误的例子:select * from test where id-1=9; 正确的例子:select * from test where id=10; 需要建立函数索引.

如果 MySQL 使用全表扫描要比使用索引快,则不会使用到索引

MySQL 中,字符串不加单引号索引会失效。正确写法:select * from t_user where username = 'order';

1,<> 2,单独的>,<,(有时会用到,有时不会)

like "%_" 百分号在前.

单独引用复合索引里非第一位置的索引列.

not in ,not exist.

当索引字段不为 null 时,只有使用 is not null 返回的结果集中只包含索引字段时,才使用索引;

当索引字段为 null 时候,使用 is null 不影响覆盖索引,但是使用 is not null 只有完全返回索引字段时才会使用索引

联合索引 is not null 只要在建立的索引列(不分先后)都会走, in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),或者=一个值; 当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),以上两种情况索引都会走。其他情况不会走。

MySQL 中,如果条件中有 or,即使其中有条件带索引也不会使用(这也是为什么尽量少用 or 的原因)。要想使用 or,又想让索引生效,只能将 or 条件中的每个列都加上索引

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • mysql 索引失效有以下几种情况 1,or 语句,如果要在or语句中使用索引,那么所有条件都必须使用索引,建议尽...
    青城楼主阅读 2,762评论 0 2
  • 索引并不会时时发生,有时就算是where查询字段中添加了索引,索引也会失效,下面我们来讲讲五种索引失效的场景。 1...
    48892085f47c阅读 9,487评论 0 8
  • MySQL索引失效的几种情况 1.索引无法存储null值 a.单列索引无法储null值,复合索引无法储全为null...
    白纸糊阅读 1,878评论 0 1
  • 1.索引无法存储null值 a.单列索引无法储null值,复合索引无法储全为null的值。b.查询时,采用is n...
    鑫奕航阅读 151评论 0 0
  • 今天中午放学,看到孩子有些沮丧,猜她心里可能有事,中午时间过短,没有沟通。内心很矛盾,不知道该怎么问,想想PET中...
    山雨谷晴阅读 407评论 0 0