提高系统性能——对SQL语句优化的思考
2024-10-20 20:51:50
软件在研发的过程中自始至终都在留意着系统的可扩展性。但与此同一时候也在关注着系统的性能,SQL语句作为系统性能的一环不容忽视。从今天開始结合开发的经验,谈一下我对SQL语句优化的理解和认知:
1、在联合查询语句中做到小表驱动大表:
联合查询是经常使用到的一种查询方式,左连接、右连接、内连接等等时不时地被应用在查询语句中,然而在这一过程中假设能判明各表的数据量,那就再好只是了,在这样的情况下from后面应该紧跟数据量小的表。为什么?呵呵呵,比方a表有1000条数据,b表有20条数据。使用左连接进行联合查询假设a表驱动b表,那么b表就要被訪问1000次,但假设b表驱动a表,a仅仅要被訪问20次,其性能可想而知。
2、不要使用in+子查询
请注意,我这里并没有说不要使用in查询,假如in中的值是给定的。而不是通过select从其他表中查询取得,那么使用inkeyword也无可厚非,可是假如in中的数据是通过select从其他表中查询取得的,强烈建议将其改为联合查询的方式,详细方法请參看博客《SQL语句优化——in,not
in,exists,not exists, left join...on》.
3、注意wherekeyword后面查询条件的顺序,将尚未给定值的查询条件放到最后面。将给定的非模糊查询条件放到最前面;
本博客持续更新中。敬请期待。
最新文章
- Spring容器深入(li)
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q141-Q143)
- jquery中的children()和contents()的区别
- 【POJ 1698】Alice's Chance(二分图多重匹配)
- MVC4 数据验证、特性、自动属性总结
- 为apache单独编译mod_rewrite.so
- 浅析PAC,教你动手修改你的PAC文件及user-rule文件实现自动代理
- Bestcoder #80
- js的一些
- 获取choice的value
- Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
- P3489 付公主的背包
- 本地存储(LocalStorage、SessionStorage、Web SQL Database、Indexed DB)
- Handler主线程和子线程相通信
- Qt使用gtest进行C++单元测试-01
- Yii 获取url 的一些方法
- X86控制寄存器和系统地址寄存器
- 解决安装Weblogic domain卡住问题(Primeton BPS)
- call and apply
- [java]Arrays.copyOf() VS System.arrayCopy()