MySql 索引优化 和 避免索引失效
建表和索引
索引优化法则
全值匹配案例:
最佳左前缀法则:
如果中间断了,那么只部分使用了索引,只有前面的的字段使用了索引
不在索引列上做任何操作(计算,函数,…)
索引中范围条件右边的列全失效
尽量使用覆盖索引
覆盖索引,直接去索引中取数据,不去表中取数据,大大提高效率
mysql 在使用不等于(!= 或者 <>)的时候无法使用索引导致全表扫描
is null , not null 也无法使用索引
like以通配符开头(‘%abc…’) mysql索引失效会变成全表扫描
案例如下: %只有写在最右边的索引才会生效
解决like ‘%字符串%’时索引不被使用的方法?(使用覆盖索引解决)
使用覆盖索引,查询的字段尽量是索引的字段
未使用覆盖索引会失效,查询的字段没有索引
email 没有使用索引
字符串不加单引号索引失效
少用or,用来连接时会导致索引失效
总结
案例
ordey by 排序 也要是 最佳左前缀法则,不然排序会失效
还没有评论,来说两句吧...