软件在研发的过程中自始至终都在留意着系统的可扩展性。但与此同一时候也在关注着系统的性能,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后面查询条件的顺序,将尚未给定值的查询条件放到最后面。将给定的非模糊查询条件放到最前面;

本博客持续更新中。敬请期待。

最新文章

  1. Spring容器深入(li)
  2. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q141-Q143)
  3. jquery中的children()和contents()的区别
  4. 【POJ 1698】Alice's Chance(二分图多重匹配)
  5. MVC4 数据验证、特性、自动属性总结
  6. 为apache单独编译mod_rewrite.so
  7. 浅析PAC,教你动手修改你的PAC文件及user-rule文件实现自动代理
  8. Bestcoder #80
  9. js的一些
  10. 获取choice的value
  11. Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
  12. P3489 付公主的背包
  13. 本地存储(LocalStorage、SessionStorage、Web SQL Database、Indexed DB)
  14. Handler主线程和子线程相通信
  15. Qt使用gtest进行C++单元测试-01
  16. Yii 获取url 的一些方法
  17. X86控制寄存器和系统地址寄存器
  18. 解决安装Weblogic domain卡住问题(Primeton BPS)
  19. call and apply
  20. [java]Arrays.copyOf() VS System.arrayCopy()

热门文章

  1. One-to-one
  2. LeetCode(9)Palindrome Number
  3. linux下C++的多线程编程
  4. 包含min的栈
  5. POJ:2753-Seek the Name, Seek the Fame
  6. cs229_part4
  7. 快速入门Pandas
  8. hdu3594 Cactus
  9. websphere8.5 与cxf2.x冲突问题
  10. chrome 下载插件包及离线安装 附 Advanced Rest Client 下载