在今天的文章里我想谈下基数计算里的一个特定问题:在查询谓语里相关列的基数计算。首先我们看下在SQL Server 7.0起的操作方法,最后我们详细看下SQL Server 2014里,在查询期间,处理相关列基数计算的全新实现方式。什么是相关列(Correlated Columns ...
在今天的文章里我想谈下基数计算里的一个特定问题:在查询谓语里相关列的基数计算。首先我们看下在SQL Server 7.0起的操作方法,最后我们详细看下SQL Server 2014里,在查询期间,处理相关列基数计算的全新实现方式。
什么是相关列(Correlated Columns)
在我们进入问题细节前,我们必须要澄清什么是相关列。当我们看SQL Server使用的查询优化器时,查询优化器是基于4个核心假设:
- 独立性(Independence)
- 一致性(Uniformity)
- 密封度(Containment)
- 夹杂物(Inclusion)
我不想细谈每个假设,因为它们在其它的白皮书里解释得非常清楚。在文章末尾的小结部分你会找到白皮书的链接。今天我们要聚焦的是第1个假设——独立性(Independence)。独立性意味这在查询谓语(WHERE子句)里用到的列是独立的,当各自查询时,会返回不同的记录。它们彼此间互不影响。遗憾的是这个假设并不都正确。我们来看一个具体的例子,这里违反了假设。假设下列2个查询:
1 SELECT * FROM Sales.SalesOrderHeader2 WHERE SalesOrderID > 74000 AND SalesOrderID < 750003 GO4 5 SELECT * FROM Sales.SalesOrderHeader6 WHERE OrderDate >= '20080626' AND OrderDate <= '20080724'7 GO
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:相关列的基数计算
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。