机动灵活:思考SQL语句

关系理论只关心如何根据条件去取得正确的数据集。

关系操作

阶段只负责准确无误的找出属于最终数据集的记录,而不同行的相同字段的关系并不是在这个阶段处理,而是完全属于排序操作。

关系理论并不涉及各种统计功能(例如百分位数等),关系理论所研究的是集合,并不涉及如何为这些集合排序。

 

SQL 与优化器

当SQL引擎处理查询时,会用优化器找出执行查询最高效的方式。优化器借助关系理论。

优化器会检查下列因素:定义了哪些索引、数据的物理布局、可用内存的大小,以及可用于执行查询任务的处理器数。

优化器还很重视查询直接或间接设计的表和索引的数据量。

以关系理论为支柱的优化器主要用于关系操作层。

sql原本就是一种声明性语言。sql应该用来表达要怎什么,而不是如何来做。从要做什么到如何来做的任务就是优化器来完成的。

查询用了order by为结果集排序,而一旦用了排序操作,该数据集就已经不是关系了(关系是无序的)

关系操作层完成尽量多的工作。因为关系操作层的执行可以优化。

 

SQL艺术的五大要素:

获得结果集所需访问的数据量。

定义结果集所需的查询条件。

结果集的大小。

获得结果集所涉及的表的数量。

多少用户会同时修改这些数据。

1数据总量

必须访问的数据总量,是要考虑的重要因素。没有确定目标总量之前,很难断定查询执行的效率。

2.定义结果集的查询条件

3.结果集的大小

无论何时,只要查询有可能返回零结果集时,都应该先检查那个最大可能导致空结果集的条件---尤其是在该检查执行非常快捷时。

4.表的数量

 

SQL时一种声明性语言,用它来说明想要什么,并让DBMS予以执行。

 

大数据量查询

select ... from a,b,c,d,e1 where       and    union select ... from a,b,c,d,e2 where       and

这类查询是典型的照搬式编程。为了提高效率,可以仅对代码中非共用的表(本例中即e1,e2)使用union,然后配合筛选条件,把union语句降级为内嵌视图。

select ... from a,b,c,d,(select from e1 where      union select ... from e2 where )  e         where  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值