SQL基础:《SQL HACKS》第2章——连接、联合和视图,总共列举了8个tips,不破坏现有查询的修改模式、过滤行和列等,下述为我对这8个tips的评析。
1、不破坏现有查询修改模式
情景描述:要对设备登记表增加一个办公室字段,但是却要保留以前的查询语句。
解决方案:新建设备登记新表,然后创建与原有设备登记表结构一样的视图,则对该视图的查询操作就是对原有设备登记表的查询操作。
评析:合理使用视图会有意外的收获,尤其是表结构发生更改后要保留遗留sql预热,通常通过创建视图都可以解决。
2、过滤行和列
评析:只从数据库查特定条件的记录和字段。所以切忌返回全表记录及记录的所有字段。
3、在索引列上过滤
评析:sql查询语句where条件,应尽量使用索引,正确地使用索引。至于如何创、使用索引作者给出下述描述:
1)在创建复合索引或复合主键时,仔细考虑各列的次序意义重大。确保每一个常用的列都至少在索引的第一个位置出现一次。
2)无疑应该把高区分度的列放在前面。
3)= 和 > 的连接条件,where子句通常能够很好地利用索引。
4、将子查询转换为JOIN
评析:多个查询sql语句,如果可以合并成一个sql查询语句,请尽量合并。切忌认为:
1)先查条件A满足的记录,得到集合A;
2)然后将集合A作为条件,去查处集合B;
…
5、将聚合子查询转换为Join
评析:将聚合子查询转换为join可以解决有些DB不支持子查询问题,并提高查询性能。
聚合子查询:通常做法都是表自连,并通过聚合函数作为where条件,这导致的结果就是对每行数据都会执行一次子查询。因此,将子查询转换为join,本章的第4个tip可以有效提高查询效率。
6、简化复杂的更新
评析:有时很难通过一个sql语句就可以更新表数据,如每个上班族都遇到的扣税问题,写一条sql语句去更新税收比较费事。为此,可以通过构建视图或者游标进行简单处理。
7、为关系选择正确的连接风格
8、生成组合
评析:通常情况下,我们说的连接都是表的内连,但有时外联、交叉连接是必须的。比如本章提到的场景:赛程安排问题,就必须使用cross join。
分享到:
相关推荐
本人正在读O'reilly的SQL Hacks这本书,深深的被这些sql技巧所吸引。作为一个程序员,如果能够在合适的地方用上精巧的sql语句,能够给开发带来无与伦比的轻巧与快捷。如果你的基础较好的话,应该只用看这个读书笔记...
● 使用高级的联合、过滤和分组技术,为数据报表获得数据。 ● 解决使用SQL的一些疑难问题。 ● 在字符串、日期等数据上执行复杂的查询与排序。 ● 设置你的事务,这样用户之间就不会发生冲突。 ● 管理用户,审计...
sql语言学习圣经 老外写的 书不厚但是很好,值得细细读
Debug+Hacks中文版—深入调试的技术和工具,主要讲述linux下的常见调试方法,还是挺不错,希望对你有帮助。
SQL_HACKS:100个业界最尖端的技巧和工具,电子书,高清版
这本书里面包括了主流数据库(Oracle MySQL SQL Server等)的SQL技巧。英文版
SQL HACKS 100个业界最尖端的技巧和工具,好不容易找到的资源
最佳的google使用方法,挖掘实用的搜索技巧,展示在进行自动查询时只要知道很少的编程技巧能实现哪些功能
SQL_HACKS:100个业界最尖端的技巧和工具,高清,好不容易找到
50 Android Hacks.pdf
《Debug Hacks中文版—深入调试的技术和工具》是Miracle Linux的创始人吉冈弘隆和几位工程师们多年从事内核开发的经验积累。从调试器的基本使用方法、汇编的基础知识开始,到内核错误信息捕捉、应用程序调试、内核...
Debug Hacks中文版—深入调试的技术和工具.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
BSD hacks techniques
Debug.Hacks中文版_深入调试的技术和工具 gdb调试内核调试用户态调试必看! 非常好的资料 有书签
DEBUG HACKS中文版 深入调试的技术和工具
vim_101_hacks
Greasemonkey Hacks.chm
Google Hacks 2nd Edition