编写高效 SQL 语句的最佳实践.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编写高效 SQL 语句的最佳实践

编编编编写写写写写写高效高效 SQL 语语句的最佳句的最佳实实践践 秦玮, 高级软件工程师, IBM 王广成, 软件工程师, IBM 王韵婷, 高级软件工程师, IBM 简简简介简介介介:::: 本文列列举了一些在编编写写 SQL 查询语句时时可能导致 DB2 查询缓缓慢的常见问题,并相应的给给出出 了编编写写高效 SQL 查询语句的几几个最佳实践方法。对于那些需要访问 DB2 数据库的应用程序开发人员 来说,具具有一定的参考价值和借鉴鉴意义。 发发发布日日期发布日日期布日日期:::: 2010 年 9 月 30 日日 级别别级别别级别别:级别别 ::: 初初级 访问访问访问情访问 情情情况况况况况况况况 1011 次浏览 建建建议建议议议: 0 ( 添加加评论 ) 平均分分 (共共 8 个评分分 ) 序言 SQL 语言是是一种强大而且灵活的语言,在使用 SQL 语言来执行某个关关系查询的时时候,用户可以写写出出 很多不同的 SQL 语句来获取相同的结结果。也就是是说,语法 (syntactical) 不同的 SQL 语句,有可能在 语义 (semantical) 上是是完全全相同的。但是是尽管这些 SQL 语句最后都能返回同样的查询结结果,它们在 DB2 中执行所需要的时时间却有可能差别别很大。这是是为什么? 众所周知,DB2 数据库具具有强大的功功能,可以自动动地把用户输入入的 SQL 语句改写写为多个语义相同的 形式并从中选取一个耗时时最少的语句来执行。但是是 DB2 并不能够永永远对所有的 SQL 语句都成功功的改 写写来取得最优的执行方案。其其中一个方面的原因就是是数据库应用程序的开发人员在写写 SQL 语句的时时 候有一些习惯性的 “小问题 ”,而正是是这些小问题带来了 SQL 语句运行时时性能上的大问题。正如平时时 所说“条条大路通罗罗马 ”,但是是并非所有通往罗罗马的路都是是坦途,我们应该找到到那条最有效的道路。 编编写写高效 SQL 语句的一些最佳实践 这里我们将介绍在编编写写 SQL 语句时时??能影响 DB2 查询性能的一些常见问题,并给给出出相应的编编写写高效 SQL 语句的最佳实践(bestpractices )。 避免免不恰当的使用 “SELECT *” 像“SELECT *”这样的写写法在用户使用中可能很常见,它表示把满足查询条件的每一条记录(Row ) 的所有列列都返回。但是是有时时候这种用法很可能导致数据库查询时时候的性能问题。假定 Sale 是是一个包 括 25 个列列(column )的表,那么下面这条查询语句就有可能在执行时时性能较差,其其中一部分分原因就 是是在 SELECT 中使用了 *. SELECT *FROM Sales WHERE YEAR(Date) 2004 AND Amount 1000 如果 SQL 语句使用了 “SELECT *”,DB2 就需要把表的所有列列都从外部存储介质上(如磁带或者硬 盘)复制制到到 DB2 的内内存中来进行处理并且返回给给用户,这显显然会增加加 I/O 和 CPU 的开销。而且如果 这条 SQL 语句还包括了排序(Sort )操操作(比比如 ORDER BY ),那么对全全部这些列列进行排序也可能 会影响到到性能。而且当表定义的列列越多,每个列列定义的数据类型(Data type )长度越长,这对性能的 影响就可能越明明显显。除此之外,DB2 还有一种被称为“IndexOnly”的数据访问方法,如果某个表上需 要检索的所有列列都能在某个合适的索引(Index )上找到到,DB2 就会使用 “IndexOnly”这种数据访问 方式。因为这种访问方式

文档评论(0)

牛X文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档