MySQL为什么有时候会选错索引?以及什么情况索引会失效?

MySQL为什么有时候会选错索引?  

  MySQL判断选择哪个索引时,这个是优化器的工作。优化器会根据扫描的行数、是否回表、是否使用临时表、排序等来判断使用索引还是全表扫描

  优化器计算扫描行数的逻辑是预估的方式 ,是通过对索引的采样统计计算出来的,所以判断的行数不准确时就会选错索引。

什么情况索引会失效? 

  1.有or必全有索引;
  2.复合索引未用左列字段;
  3.like以%开头;
  4.需要类型转换;
  5.where中索引列有运算;
  6.where中索引列使用了函数;
  7.如果mysql觉得全表扫描更快时

 
posted @ 2022-11-10 11:50  road2master  阅读(91)  评论(0编辑  收藏  举报