SQL Server 查询优化技术分析与实现
2013-12-29卫国标林勇
摘要:使用数据库的主要目的是方便快捷地使用数据,数据库中所有操作都离不开查询。查询处理是SQL Server产品中非常重要的组成部分,在查询处理中,最复杂且重要的是查询的优化技术。该文分析了多阶段优化,并重点讨论优化查询策略在子查询中具体实现。
关键词:数据库;查询;优化;子查询;策略
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)16-3671-03
针对给定的一个数据库查询,T-SQL可能有多种执行方式,查询优化技术就是从这些方式中选择出执行效率最高的查询执行计划,特别是针对海量数据库或大型数据库的查询,或是查询语句比较复杂的情况下,查询优化的效果就会非常明显。为了找到执行计划的最佳查询,基于成本的查询优化器应该生成搜索空间中存在的所有可能的执行计划,并正确估计每个计划的成本
1 SQL Serve优化模型探讨
传统的优化查询,按优化层次可分为两部分,即逻辑优化和物理优化。这些方法已发展得很完善。但面对数据库的快速发展,应用环境更加复杂,并行计算环境日益普及,其局限性越来越突出。为适应这些新的应用环境和需求,非嵌套化处理、流水线策略、并行查询优化等方法不断地提出来,从而弥补旧方法的不足[1]。
2 多阶段优化分析
SQL Serve优化器是基于代价的,它试图为每个查询找出运行最快、代价最小的查询解决方法,及执行计划。复杂的SQL语句可有千种执行计划,面对多种可能,查询优化器的工作是找到接近理论上最低值的解决方法。
3 优化查询策略在子查询中的具体实现
执行计划是在查询处理的最优化阶段由称为查询优化器的数据库引擎组件生成的,这要考虑到许多不同的因素,例如,查询中涉及的表、使用的搜索谓词和连接条件、返回的列名,以及索引的有效使用等。高效的执行计划有两方面的衡量标准:一是使中间结果最小化,其次是采用尽可能优秀的操作方法。在SQL语句中,select-from-where 称为一个查询块。将一个查询块嵌套在另一个查询块的where子句或having子句中的查询称为嵌套查询[3]。现在从下面的SQL查询入手进行分析子查询的处理标准。目的是实现在pubs数据库中实现查找订单金额大于10000的顾客名单。
数据库的使用是为了方便用户快捷查询数据,提高查询的性能是优化数据库的最主要措施。数据库优化器的作用是求得一个可接受的高效执行计划,原因是查询优化的代价也是很高的。查询优化器必须在优化的时间和执行计划的质量之间取得平衡。
参考文献:
[1] Velen D.SQL Server2008数据库原理-设计与实现[M].周立柱,冯建华,译.北京:清华大学出版社,2008.
[2] Mackin J C,Hotek M. SQL Server2005数据库服务器架构设计[M].北京:清华大学出版社,2007.
[3] 北京阿博泰克北大青鸟信息技术有公司.数据库应用与性能优化[M].北京:科学技术出版社,2009.