Sql Hacks 阅读感悟——连接、联合和视图

SQL基础:《SQL HACKS》第2章——连接、联合和视图,总共列举了8tips,不破坏现有查询的修改模式、过滤行和列等,下述为我对这8tips的评析。

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,本章的第4tip可以有效提高查询效率。

 

6、简化复杂的更新

评析:有时很难通过一个sql语句就可以更新表数据,如每个上班族都遇到的扣税问题,写一条sql语句去更新税收比较费事。为此,可以通过构建视图或者游标进行简单处理。

 

7、为关系选择正确的连接风格

8、生成组合

评析:通常情况下,我们说的连接都是表的内连,但有时外联、交叉连接是必须的。比如本章提到的场景:赛程安排问题,就必须使用cross join

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值