五个提升SQL语句性能的小窍门( 二 )


分组是一个相对耗时的操作,为什么不在分组之前缩小数据范围呢?
正确示例select user_id,user_name from orderwhere user_id <= 200group by user_id使用where条件在分组之前过滤掉冗余数据,这样在分组时效率会更高 。
实际上,这是一个思路 , 不仅仅适用于group by的优化 。在SQL语句执行一些耗时操作之前,应尽量缩小数据范围 , 这样可以提高整体SQL的性能 。
5 索引优化在SQL优化中,索引优化是非常重要的内容 。
在许多情况下,使用索引和不使用索引时,SQL语句的执行效率会有很大差异 。因此,索引优化是SQL优化的首选 。
索引优化的第一步是检查SQL语句是否已经使用了索引 。
那么,如何检查SQL是否使用了索引呢?
可以使用explAIn命令查看MySQL的执行计划 。
explain select * from `order` where code='002';

五个提升SQL语句性能的小窍门

文章插图
以下是索引失效的一些常见原因:
  • 不满足最左前缀原则 。
  • 范围索引列没有放在最后 。
  • 使用了select * 。
  • 对索引列进行了计算 。
  • 对索引列使用了函数 。
  • 字符串类型没有加引号 。
  • 使用了like % 。
  • 错误地使用了is null 。
  • 错误地使用了or 。
如果不是由于上述原因,就需要进一步调查其他原因 。
此外,您是否曾经遇到过这样的情况:明明是相同的SQL,只是输入参数不同 。有时候索引a生效,有时候索引b生效?
有时候MySQL会选择错误的索引 。
如果有必要,可以使用force index来强制查询SQL使用特定的索引 。




推荐阅读