MySQL中SQL优化的原则如下:

原则1、尽量全值匹配

     例如表中有a、b、c字段的组合索引,where后面的条件要尽量覆盖到a、b、c。 如下图:MySQL种SQL优化的原则

 

原则2、最佳左前前缀原则

    例如在表中有a、b、c字段的组合索引。  查询条件中会优先找有没有a;如果没有则不命中索引,如果有命中索引并再找b,依次往下推(匹配结果遵从原则1,匹配的越多,效率越高)。

 MySQL种SQL优化的原则

 

原则3: 不要在索引列上做任何操作

在索引列上的任何操作都会导致索引失效,如图:

MySQL种SQL优化的原则

 

原则4:范围条件放在最后

范围条件会导致,该条件后面所有条件都不走索引了。

如在表中有a、b、c字段的组合索引, 查询条件为 where a= 1 and b> 1 and c=1  只有a、b会用到索引,如果 换成

 where a= 1 and c=1 and b> 1   a、b、c都可以用到索引。如下图:

MySQL种SQL优化的原则

 

原则5:尽量用覆盖索引

覆盖索引(查询的列为索引列或索引列的子集)

如在表中有a、b、c字段的组合索引, [select a, b,c   ...  ] [select a, c  ] 都会用到覆盖索引

尽量少用select  * 。如图:

MySQL种SQL优化的原则

 

原则6:不等于(!= 与 <>) 要少用

在mysql中使用!= 与 <>的时候无法走到索引。如下图:

MySQL种SQL优化的原则

 

原则7:Null与Not null 对性能有影响

表列为not Null ,查询条件为is null 和is not null 时都会导致索引失效

MySQL种SQL优化的原则

MySQL种SQL优化的原则

表列为运行Null

查询条件为is null可以走到索引。

查询条件为 is not null时会使索引失效。

 

原则8:注意like查询条件

like条件中以%开头会引起索引失效;不用%开头(不用%或者以%结尾)可以使用索引。

MySQL种SQL优化的原则

 

原则9:字符类型一定要加引号呀。

字符不加引号会引起索引失效。

MySQL种SQL优化的原则

 

原则10: 用union 替换or 可以提高效率

MySQL种SQL优化的原则

相关文章:

  • 2021-05-01
  • 2022-12-23
  • 2021-07-30
  • 2022-01-29
  • 2022-01-13
  • 2021-05-18
  • 2022-12-23
猜你喜欢
  • 2021-06-27
  • 2022-01-25
  • 2021-09-04
  • 2021-07-15
相关资源
相似解决方案