SQL Server如何处理到达数据库引擎的查询

当一个查询到达数据库引擎时,SQL SERVER执行两个主要的步骤来产生期望的查询结果。第一步是查询编译,它生成查询计划,第二步执行这个查询计划。

SQL
SERVER 2005中的查询编译由三个步骤组成:分析、代数化及查询优化。完成这些步骤后,编译器把经过优化的查询计划保存到过程缓存中。在这里,执行引擎把该计划转换为可执行的形式,然后执行其中的步骤以生成查询结果。如果今后再次执行相同的查询或存储过程时,过程缓存已经包含了该计划,则跳过编译步骤,直接重用缓存的计划来执行该查询或存储过程。

关于SQL Server的优化

SQL
SERVER并不优化批处理中的每条语句。只优化那些访问表而且可能生成多个执行计划的语句。SQL SERVER优化所有DML(数据操作语言)语句,即SELECT 、DELECT和UPDATE语句。除了DML,其他一些T-SQL语句也会被优化,CREATE INDEX便是其中之一,只有被优化过的语句才会生成查询计划。

关于SQL中的分组

GROUP
BY或HAVING之类显式子句并不是使SELECT列表被分组的唯一因素。根据SQL的规定,只要出现绑定到特定列表的聚合函数,即使没有GROUP BY或HAVING子句,也会使SELECT列表分组。下面是一个简单的示例:

SELECT c1,MAX(c2) FROM
dbo.T1;

这是一个分组SELECT,因为查询中包含了一个MAX聚合。又因为它是一个分组SELECT,在其中使用非聚集的列c1是不合法的,所以该查询不正确。

原文发布时间为:2011-02-16

本文作者:vinoYang

时间: 2024-10-31 22:45:14

SQL Server如何处理到达数据库引擎的查询的相关文章

SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识

原文:SQL点滴17-使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识 在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息,今天把自己工作过程中经常用到的一些数据库引擎存储过程,系统视图等等总结一下以备不时之用.下面的知识多是自己总结,有一些参考了MSDN. sp_help 有时候想尽快查出数据库对象的相关信息,这个存储过程就很有用了.使用它可以查询出整个数据库中所有对象的相关信息.直接运行sp_help结果如下图1,

Microsoft SQL Server 7.0数据库升级转换问题

数据库升级转换所需时间? 影响数据库升级转换所需时间的因素很多, 除了硬件的因素外,由于需要重新创建每个SQL Server 6.X的对象,数据库复杂与否也会有影响,一般来说大致的速度如下 数据库大小 估计所需时间 400 MB 少于20分钟 1 GB 少于1小时 5 GB 少于4小时 10 GB 少于12小时 100 GB 少于24小时 升级转换数据库的方法? 在同一台计算机上升级转换数据库:管线(pipeline):所需空间约为原有数据库的1.5 倍,升级转换完成后,如果原来的数据库已不需,

SQL Server连接ACCESS数据库的实现

access|server|数据|数据库   SQL Server连接ACCESS数据库的实现   作者:  CCBZZP          不同数据库平台的互连一般称之为数据库的异构服务,现在各大数据库之间都可以实现这样的异构互连,只是各厂商的具体实现技术不一样,如:在SQL SERVER里面叫做LINKED SERVER,通过ODBC实现与其它数据库的互联.   本文的测试环境为: 操作系统:  WINDOWS2000 SERVER (繁体系统) 安装数据库: SQLSERVER2000(英

Oracle、SQL Server、Access数据库高效果分页技巧

1.SQL Server.Access数据库 这都微软的数据库,都是一家人,基本的操作都是差不多,常采用如下分页语句: PAGESIZE:每页显示的记录数 CURRENTPAGE:当前页号 数据表的名字是:components 索引主键字是:id 以下是引用片段: select top PAGESIZE * from components where id not in (select top (PAGESIZE*(CURRENTPAGE-1)) id from components order

SQL Server中转换数据库的排序规则

本文定义了排序规则并介绍如何在 Microsoft SQL Server 中转换数据库的排序规则.有关 SQL Server 2000 的概念和讨论同样适用于 SQL Server 2005. 什么是排序规则? 排序规则指定了表示每个字符的位模式.它还指定了用于排序和比较字符的规则.排序规则具有下面的特征: ◆语言 ◆区分大小写 ◆区分重音 ◆区分假名 要了解服务器当前使用的排序规则,可以在 SQL 查询分析器中运行 sp_helpsort 系统过程. SQL Server 7.0 不支持使用多

《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server中收缩数据库不好用的原因 数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除. 这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为: DBCC SHRINKFILE ( { file_name | file_id } { [ , EMPTYFILE ] | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATE

PowerDesigner 16.5对SQL Server 2012 生成数据库时&quot;不支持扩展属性&quot;问题

原文:PowerDesigner 16.5对SQL Server 2012 生成数据库时"不支持扩展属性"问题 团队合作设计一套系统数据模型,创建了PDM后,Table.View.Store Procedure等都创建好了,且创建了多个Schema方便管理这些数据库对象,但Table.view.Column等对象有Comment时(用来在团队不同成员间共享描述信息) 生成数据库时会得到一个提示"不支持扩展属性,或对象不存在",分析发现异常在类似以下语句: if ex

SQL Server 7.0数据库的六种数据移动方法

server|数据|数据库 SQL Server 7.0数据库的六种数据移动方法转自:世纪易网 2003年3月3日20:6本人从事的工作是数据库管理员,要维护多台服务器中的数据库,经常把某台服务器中的某个数据库移动到另外一台服务器,对数据的移动有些心得体会,希望和大家共同交流. 1. 通过工具DTS的设计器进行导入或导出 DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的

如何在SQL server 2005中将数据库备份路径设为网络路径

server|备份|数据|数据库|网络 如何在SQL server 2005中将数据库备份路径设为网络路径如:"\\BackupPC\dbback\" SQL server 2000中是可以的呀,怎么到2005就不好这样做的???=================================现在备份数据库真麻烦,都要先备份到本机,然后再剪切到网上邻居的另一台电脑中,真郁闷!!!! ===================================================