<!-- [if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!-- [if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]-->
<!-- [if gte mso 10]>
<mce:style><!--
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
-->
<!-- [endif]-->
查询优化的目的是提高数据检索速度,提高数据检索意味着减少磁盘
IO
读取或者逻辑内存读取次数,这需要从两个方面入手:数据要尽可能的缓存到内存、尽可能的使用索引。内存的问题可以参见
<!-- [if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:PunctuationKerning/>
<w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
<w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
<w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:Compatibility>
<w:SpaceForUL/>
<w:BalanceSingleByteDoubleByteWidth/>
<w:DoNotLeaveBackslashAlone/>
<w:ULTrailSpace/>
<w:DoNotExpandShiftReturn/>
<w:AdjustLineHeightInTable/>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:UseFELayout/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><!-- [if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
</w:LatentStyles>
</xml><![endif]-->
<!-- [if gte mso 10]>
<mce:style><!--
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}
-->
<!-- [endif]-->:
http://msdn.microsoft.com/zh-cn/library/ms188284.aspx
,本文主要是体现如何使用索引来提高速度。具体方法:
<!-- [if !supportLists]-->1)
<!-- [endif]-->养成良好的编程习惯,比如SARG
优化(这个好像来自于sybase
)
<!-- [if !supportLists]-->2)
<!-- [endif]-->使用查询计划,看某一个查询是否是使用了索引,是否是使用了临时表,尽量使用索引,避免临时表
<!-- [if !supportLists]-->3)
<!-- [endif]-->使用查询优化顾问,它可以帮助你判断查询是否优化,并提示你建立索引
<!-- [if !supportLists]-->4)
<!-- [endif]-->使用SET STATISTICS IO
命令,查看磁盘读取次数,尽量物理磁盘和逻辑读取次数少
<!-- [if !supportLists]-->5)
<!-- [endif]-->建立主键,主键是聚簇索引,数据行基于聚集索引键按顺序存储
<!-- [if !supportLists]-->6)
<!-- [endif]-->使用组合索引,避免OR
操作符使用临时表,select * from table where a=1 or b=2,
可以考虑创建a
and b
的组合索引
<!-- [if !supportLists]-->7)
<!-- [endif]-->大数据量表使用已分区表,具体参见:
http://msdn.microsoft.com/zh-cn/library/ms345146
(
SQL.90
)
.aspx
<!-- [if !supportLists]-->8)
<!-- [endif]-->使用存储过程代替复杂sql
语句
<!-- [if !supportLists]-->9)
<!-- [endif]-->存储过程中使用表变量而不使用临时表,通常,表变量可提供更有效的查询 处理:
table
变量的行为类似于局部变量,有明确定义的作用域;在存储过程中使用
table
变量与使用临时表相比,减少了存储过程的重新编译量;涉及
table
变量的事务只在
table
变量更新期间存在。因此减少了
table
变量对锁定和记录资源的需求。但不能显式创建
table
变量的索引,也不保留
table
变量的任何统计信息。在某些情况下,可以通过改用支持索引和统计信息的临时表来改善性能。具体参见:
http://msdn.microsoft.com/zh-cn/library/ms175010.aspx
<!-- [if !supportLists]-->10)
<!-- [endif]-->当必须对临时表显式地创建索引时,或多个存储过程或函数必须使用表值时,临时表很有用。使用大容量日志模式可以提高临时表大量插入数据的效率。
分享到:
相关推荐
中文 高清 全 Microsoft SQL Server 2005技术内幕 系列之一 ...《Microsoft SQL Server 2005技术内幕:查询、调整和优化》 例子和脚本 未被涵盖的主题 免责条款 如何获得支持 关联网站 微软学习站点
本书及其续篇——《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》介绍了SQL Server 2005中高级T-SQL查询、查询优化及编程相关的知识。这两本书侧重于解决实践中的常见问题,并讨论了解决这些问题的方法。它们...
书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...
sqlserver2005技术内幕中文,pdf版,文字清晰,4本全。 建议观看顺序:1、T-SQL查询;2、T-SQL程序设计;3、存储引擎;4、查询、调整和优化
书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...
如果不熟悉sqlserver可以使用数据库引擎优化顾问来对数据库提出优化建议,然后通过系统管理的修改达到目的。 数据库引擎优化顾问 数据库引擎优化顾问介绍 分析一个或多个数据库的工作负荷和物理实现,工作负荷...
sql语句优化建议,sql语句优化建议,sql语句优化建议
如何做SQL SERVER性能优化的建议
sqlserver2005技术内幕中文,pdf版,文字清晰,4本全。 建议观看顺序:1、T-SQL查询;2、T-SQL程序设计;3、存储引擎;4、查询、调整和优化
SQL Server 2005 核心技术 SQL Server 2005 服务简介 SSAS(Analysis Service)与 商业智能(BI) 数据挖掘算法简介(Data Mining) 联机数据分析技术(OLAP) SSIS (Integration Service)与商业智能(BI) SSRS...
2、查询SQL语句时打开“显示估计的执行计划”,分析每个步骤的情况 3、初级做法,在CPU占用率高的时候,打开SQL Server Profiler运行,将跑下来的数据存到文件中,然后打开数据库引擎优化顾问调用那个文件进行分析,...
SQL Server 海量数据查询代码优化以及建议: 海量数据是大家容易碰到的一个难题,本文档给出了中肯的建议
这是一个相当高级的SQL Server监控工具,全面监控SQL Server的活动与性能,分析性能瓶颈,给出优化建议。 监控SQL Server的活动:进程、任务,详细查看当前执行的语句与实际变量值,终止进程 IO/CPU/网络等性能...
设计1个应用系统似乎并不难,但是要想使系统达到最优化的性能并不是一件容易的事。在开发工具、数据库设计、应用...本文以SQL Server为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议。
在 DTA(数据库调节顾问)引用经过索引的“空间数据类型”列时,查询结果经过了优化。 用户在并行执行计划中使用“序列函数”(如 Row_Numbers())可获得优异的体验。 Microsoft SQL Server 2008 Service Pack 2 ...
内容涵盖了SQLServer的简介、安装和配置、数据类型、表和索引、查询语言、存储过程和触发器、事务管理、备份和恢复、高可用性、性能优化、监控和维护、社区和支持等高级知识点。 **适用人群:** 本教程适合所有准备...
所以我们会写如下的SQL语句: select top 100 * from 表 order by Score desc 如果表非常大的话,那么这样的操作是非常消耗资源的,因为SQL SERVER要对整个表进行排序,然后取前N条记录.这样的造作是在Temdb
本文以SQL Server为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议。1 数据库设计 要在良好的SQL Server方案中实现最优的性能,最关键的是要有1个很好的数据库设计方案。在实际工作中...
有关sql优化的建议,使用的是Oracle数据库,主要是sql编写的一些经验和建议,帮助写好sql语句,提高sql的性能或可读性。