点击上方关注 “终端研发部”
设为“星标”,和你一起掌握更多数据库知识
首发于我的知乎:终端研发部
我之前项目中的几个SQL,说起来,还是从工作记录中找出来的!
如果你的团队在 SQL 优化这方面搞得很优秀,对你们整个大型系统可用性方面无疑是一个质的跨越,真的能让你们老板省下不止几沓子钱。
优化前的sql
SELECT * FROM table_name WHERE condition1 = value1 AND condition2 = value2 AND condition3 = value3 ORDER BY column_name;
优化后的sql
SELECT * FROM table_name WHERE condition1 = value1 AND condition2 = value2 AND condition3 = value3 ORDER BY column_name;
优化前的sql
SELECT * FROM table_name LIMIT 10 OFFSET 20;
优化后的sql
优化后:
```sql
SELECT * FROM (
SELECT rownum AS rn, t.* FROM (
SELECT * FROM table_name
) t
) WHERE rn BETWEEN 21 AND 30;
优化前的sql
SELECT column1, column2, SUM(column3) FROM table_name WHERE condition1 = value1 AND condition2 = value2 GROUP BY column1, column2;
优化后的sql
SELECT column1, column2, SUM(column3) FROM table_name WHERE condition1 = value1 AND condition2 = value2 GROUP BY column1, column2;
当然也有一些很重要的优化手段:
用IN来替换OR
低效查询
SELECT * FROM t WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30;
—–> 高效查询
SELECT * FROM t WHERE LOC_IN IN (10,20,30);
适合使用索引的场景
1) 主键自动创建唯一索引
2) 频繁作为查询条件的字段
3) 查询中与其他表关联的字段
4) 查询中排序的字段
5) 查询中统计或分组字段
索引失效情况
总之,从创建表结构,选择适合的索引引擎,sql语句以及硬件都考虑一下,面试的时候也可以照着这样的思路来!

回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群
阅读更多
用 Spring 的 BeanUtils 前,建议你先了解这几个坑!
在华为鸿蒙 OS 上尝鲜,我的第一个“hello world”,起飞!
一款vue编写的功能强大的swagger-ui,有点秀(附开源地址)
相信自己,没有做不到的,只有想不到的
在这里获得的不仅仅是技术!


喜欢就给个“在看”
本文分享了SQL优化的实例,包括去除冗余的ORDERBY,使用IN代替OR,以及识别和利用索引的场景。强调从表设计到硬件选择的全面优化策略,对于IT团队的效率和成本节省有重要价值。

被折叠的 条评论
为什么被折叠?



