前言
上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握。
通过本篇可以了解我们平常所写的T-SQL语句,在SQL Server数据库系统中是如何分解执行的,数据结果如何通过各个运算符组织形成的。
技术准备
基于SQL Server2008R2版本,利用微软的一个更简洁的案例库(Northwind)进行解析。
一、数据连接
数据连接是我们在写T-SQL语句的时候最常用的,通过两个表之间关联获取想要的数据。
SQL Server默认支持三种物理连接运算符:嵌套循环连接、合并连接以及哈希连接。三种连接各有用途,各有特点,不同的场景会数据库会为我们选择最优的连接方式。
a、嵌套循环连接(nested loops join)
嵌套循环连接是最简单也是最基础的连接方式。两张表通过关键字进行关联,然后通过双层循环依次进行两张表的行进行关联,然后通过关键字进行筛选。
可以参照下图进行理解分析
其实嵌套扫描是很简单的获取数据的方式,简单点就是两层循环过滤出结果值。
我们可以通过如下代码加深理解
for each row R1 in the outer table for each row R2 int the inner table if R1 join with R2 return (R1,R2)
举个列子 Continue reading “SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)”