分组是一个相对耗时的操作,为什么不在分组之前缩小数据范围呢?
正确示例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';

文章插图
以下是索引失效的一些常见原因:
- 不满足最左前缀原则 。
- 范围索引列没有放在最后 。
- 使用了select * 。
- 对索引列进行了计算 。
- 对索引列使用了函数 。
- 字符串类型没有加引号 。
- 使用了like % 。
- 错误地使用了is null 。
- 错误地使用了or 。
此外,您是否曾经遇到过这样的情况:明明是相同的SQL,只是输入参数不同 。有时候索引a生效,有时候索引b生效?
有时候MySQL会选择错误的索引 。
如果有必要,可以使用force index来强制查询SQL使用特定的索引 。
推荐阅读
- 微信内存优化:释放大量空间,提升使用体验
- 盘点王者荣耀五个完全不带控的英雄
- 自我提升对人生的意义 自我提升对人生的意义有哪些
- 生产真实案例:几条SQL把服务器干崩了,事后还大言不惭!
- 拯救爆表的MySQL:小红书万亿级存储系统自研与迁移之路
- 轻松玩转Python,五个步骤打造惊艳的折线图
- MySQL数据删除绝招,轻松搞定数据清除
- 从零到SQL注入防护大师,打造安全的Python应用程序
- 怎样提升表达能力 怎样提升表达能力和语言组织能力
- 提升学历的四种方式的含金量 提升学历的方法有哪些
