mysql 创建索引建议

创建索引时,尽量满足一下规则:

1.尽量匹配所有查询(全值匹配我最爱);

2.如果索引了多列,要遵守最佳左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。

3.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描。

4.存储引擎不能使用索引中范围条件右边的列。

5.mysql 在使用不等于(!= 或者<>)的时候无法使用索引会导致全表扫描。

6.is not null 也无法使用索引,但是is null是可以使用索引的。

7.like以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作。

8.字符串不加单引号索引失效。

一般性建议:

对于单键索引,尽量选择针对当前query过滤性更好的索引。

在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好。

在选择组合索引的时候,尽量选择可以能够包含当前query中的where字句中更多字段的索引。

在选择组合索引的时候,如果某个字段可能出现范围查询时,尽量把这个字段放在索引次序的最后面。

书写sql语句时,尽量避免造成索引失效的情况。

没有100%把握时,执行sql不要指定使用具体索引,交由优化器来选择。

猜你喜欢

转载自blog.csdn.net/fz13768884254/article/details/88425946