WEB开发网
开发学院数据库DB2 DB2数据库SQL编码优化基础 阅读

DB2数据库SQL编码优化基础

 2008-08-27 16:26:20 来源:WEB开发网   
核心提示: 请记住:使每个查询成为仅索引访问是不谨慎,甚至也是不可能的,DB2数据库SQL编码优化基础(7),您应该谨慎使用该技术以便用于特别棘手或重要的 SQL 语句,SQL 编码准则当您编写访问 DB2 数据的 SQL 语句时,DB2 还会尽职地检索该列,这会产生附加开销,要确保遵循以下三个编码

请记住:使每个查询成为仅索引访问是不谨慎,甚至也是不可能的。您应该谨慎使用该技术以便用于特别棘手或重要的 SQL 语句。

SQL 编码准则

当您编写访问 DB2 数据的 SQL 语句时,要确保遵循以下三个编码 SQL 的准则以获得最佳性能。当然,SQL 性能是一个复杂的话题,而且了解 SQL 的执行方式的每一个细微差别可能要花一生的时间。但是,这些简单的规则可以使您进入开发高性能 DB2 应用程序的正轨。

第一条规则是始终在每条 SQL SELECT 语句的 SELECT 列表中只提供 确实需要检索的那些列 。另一种说法就是“不要使用 SELECT *”。简写 SELECT * 表示您要检索正在被访问的表中的所有列。这适用于“快捷但不恰当的方式获得的“(quick and dirty)查询,但却是应用程序的坏实践,因为:

DB2 表在将来可能需要更改,以包括附加列。SELECT * 也会检索那些新的列,而如果没有进行费时的更改,您的程序也许无法处理附加的数据。

DB2 将为被请求返回的每一列消耗附加资源。如果程序不需要数据,它就不会寻找它。即使程序需要每一列,最好根据 SQL 语句中的名称来显式地寻找每一列,以便增加清晰度和避免以前犯的错误。

不要寻找您已经知道的东西 。这听起来似乎显而易见,但大多数程序员都曾经违反过这条规则。举一个典型的示例,考虑以下 SQL 语句有什么错误:

  SELECT EMPNO, LASTNAME, SALARY
FROM EMP
WHERE EMPNO = '000010';

放弃吗?问题是 EMPNO 已经包含在 SELECT 列表中。您已经知道了 EMPNO 将等于值“000010”,因为那就是 WHERE 子句要 DB2 做的事。但在 WHERE 子句中列出了 EMPNO,DB2 还会尽职地检索该列。这会产生附加开销,从而降低性能。

上一页  2 3 4 5 6 7 8 9  下一页

Tags:DB 数据库 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接