- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server数据查询优化方法
SQL Server数据查询优化方法
摘要:SQL Server是一种功能强大的数据库管理系统,许多数据库应用系统都是以它作为后台数据库。本文在分析影响SQL SERVER数据查询效率的因素的基础上,提出了几种优化数据查询的方法。
关键词:SQL Server,数据,查询,优化
一、 引言
SQL Server是是由微软公司开发的基于Windows操作系统的关系型数据库管理系统,它是一个全面的、集成的、端到端的数据解决方案,为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。目前,许多中小型企业的数据库应用系统都是用SQL Server作为后台数据库管理系统设计开发的。设计一个应用系统并不难,但是要想使系统达到最优化的性能并不是一件容易的事。根据多年的实践,由于初期的数据库中表的记录数比较少,性能不会有太大问题,但数据积累到一定程度,达到数百万甚至上千万条,全面扫描一次往往需要数十分钟,甚至数小时。20%的代码用去了80%的时间,这是程序设计中的一个著名定律,在数据库应用程序中也同样如此。如果用比全表扫描更好的查询策略,往往可以使查询时间降为几分钟。而且我们知道,目前数据库系统应用中,查询操作占了绝大多数,查询优化成为数据库性能优化最为重要的手段之一。
二、 影响查询效率的因素
SQL Server处理查询计划的过程是这样的:在做完查询语句的词法、语法检查之后,将语句提交给SQL Server的查询优化器,查询优化器通过检查索引的存在性、有效性和基于列的统计数据来决定如何处理扫描、检索和连接,并生成若干执行计划,然后通过分析执行开销来评估每个执行计划,从中选出开销最小的执行计划,由预编译模块对语句进行处理并生成查询规划,然后在合适的时间提交给系统处理执行,最后将执行结果返回给用户。所以,SQL Server中影响查询效率的因素主要有以下几种:
1. 没有索引或者没有用到索引。索引是数据库中重要的数据结构,使用索引的目的是避免全表扫描,减少磁盘I/O,以加快查询速度。
2. 没有创建计算列导致查询不优化。
3. 查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)。
4. 返回了不必要的行和列。
5. 查询语句不好,没有优化。其中包括:查询条件中操作符使用是否得当;查询条件中的数据类型是否兼容;对多个表查询时,数据表的次序是否合理;多个选择条件查询时,选择条件的次序是否合理;是否合理安排联接选择运算等。
三、 SQL Server数据查询优化方法
3.1建立合适的索引
索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。当根据索引码的值搜索数据时,索引提供了对数据的快速访问。事实上,没有索引,数据库也能根据SELECT语句成功地检索到结果,但随着表变得越来越大,使用“适当”的索引的效果就越来越明显。索引的使用要恰到好处,其使用原则有:
(1) 对于基本表,不宜建立过多的索引;
(2) 对于那些查询频度高,实时性要求高的数据一定要建立索引,而对于其他的数据不考虑建立索引;
(3) 在经常进行连接,但是没有指定为外键的列上建立索引;
(4) 在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引;
(5) 在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度;
(6) 如果待排序的列有多个,可以在这些列上建立复合索引。
在SQL Server中,索引按索引表达式包含的列分为单列索引和复合索引。检查查询语句的where子句,因为这是优化器重要关注的地方。包含在where里面的每一列都是可能的侯选索引,为能达到最优的性能,例如:对于在where子句中给出了column1这个列,下面的两个条件可以提高索引的优化查询性能!第一:在表中的column1列上有一个单索引;第二:在表中有多索引,但是column1是第一个索引的列。避免定义多索引而column1是第二个或后面的索引,这样的索引不能优化服务器性能。例如:下面的例子用了pubs数据库。
SELECT au_id,au_lname,au_fname
FROM authors WHERE au_lname=’White’
按下面几个列上建立的索引将会是对优化器有用的索引
au_lname
au_lname,au_fname
而在下面几
文档评论(0)