mssql sqlserver select查询原理分析


摘要:
下文将讲述sqlserver中select的查询原理,如下所示:
实验环境:sql server 2008 R2



1.表查询的原理

select 列名
from 表名
[ where 查询条件]

select查询语句的原理,首先根据from 关键字找出相应的表,并将表装载至内存中,然后把相关where查询条件装载至内存,根据表名和where条件对表数据进行检索,形成相应的虚拟表(worktable),再根据待返回列名,返回相应的列给用户。


例:
SELECT *
FROM [testTable]
WHERE [列] = ‘maomao365.com’;

sql server引擎先找到select 谓词,然后将表testTable加载至内存中,然后循环表,从第一条记录开始查找,检测到[列]值等于’maomao365.com’,

依次循环检测表,至到将整张表检索完毕,将检索完毕的数据装载至虚表中,然后再将虚拟表中符合条件的列返回给客户端用户。

例2:
SELECT *
FROM [testTable]
WHERE EXISTS
(SELECT *
FROM [testTable2]
WHERE [testTable2].KeyId = [testTable].KeyId );

下文是一个sql exists嵌套查询操作,

sqlserver引擎循环检索 testTable时,需 同时将testTable2装载至内存进行遍历检测,类似于开发语言中的

for()

{

for()

{}

}

最后将符合条件的虚拟表返回给客户端用户。