ruby基础功能-mysql优化

2019-07-22  本文已影响0人  葫芦葫芦快显灵

优化SQL,其实是优化查询优化器,使其按照我们的想法,帮助我们选折最优的执行方案

优化建议

  1. EXPLAIN

写在SQL前面,可以查看SQL的查询计划

  1. in 包含的值不应太多

MySQL对于IN做了相应的优化,是将IN的常量存储于一个数组中,并且有序排列,如果此时数值较多,产生的消耗就会很多
优化建议: 如果可以使用范围,就用范围表示

  1. SELECT语句尽可能标明字段名称

SELECT * 增加很多不必要的消耗;增加了使用覆盖索引的可能性,所以尽可能在SELECT后跟上的是字段名,而不是*

  1. 如果where条件中其他字段没有索引,尽量少用or

or两边的字段中,如果有一个不是索引字段,而其他条件也不是索引字段,会造成该查询不走索引的情况。很多时候使用union all或者是union(必要的时候)的方式来代替“or”会得到更好的效果

  1. 区分in和exists、not in和not exists
  2. 使用合理的分页方式以提高分页的效率

可以设置下一页的起点从而提高效率

  1. 避免在where子句中对字段进行null值判断

一旦条件中有null,那么就会导致引擎放弃索引而进行全表扫描

  1. 避免在where子句中对字段进行表达式操作

会导致引擎放弃索引而进行全表扫描

  1. 对于联合索引来说,要遵守最左前缀法则

where字句中出现最频繁的列放在最左边,如创建[A, B, C]联合索引,相当于创建了 (A)(A, B) (A, B, C) 这三种情况的索引

  1. 注意范围查询语句

对于联合索引来说,如果存在范围查询,比如between、>、<等条件时,会造成后面的索引字段失效

上一篇下一篇

猜你喜欢

热点阅读