WEB开发网
开发学院数据库DB2 DB2 基础: 编码 DB2 SQL 以获得最佳性能 阅读

DB2 基础: 编码 DB2 SQL 以获得最佳性能

 2008-09-17 16:29:04 来源:WEB开发网   
核心提示: 修改影响 :DB2 将自动维护您创建的每个索引,这表示对该表的每个 INSERT 和每个 DELETE 都将不仅在表中插入和删除,DB2 基础: 编码 DB2 SQL 以获得最佳性能(6),而且会在其索引中插入和删除,如果您对在索引中的列的值进行 UPDATE 操作,因为我们需要的所有数据

修改影响 :DB2 将自动维护您创建的每个索引。这表示对该表的每个 INSERT 和每个 DELETE 都将不仅在表中插入和删除,而且会在其索引中插入和删除。如果您对在索引中的列的值进行 UPDATE 操作,那么您还更新了该索引。因此索引加快了检索过程的速度,但减慢了修改的速度。

现有索引中的列 :如果在 EMPNO 或 DEPTNO 上已经有了一个索引,那么创建另一个关于该组合的索引也许并不明智。但是,更改另一个索引以添加缺少的列也许可以起作用。但也不一定,因为索引中列的顺序也许会根据查询而有很大差异。例如,考虑以下查询:SELECT  LASTNAME, SALARY
FROM   EMP
WHERE  EMPNO = '000010'
AND   DEPTNO > 'D01';

在这种情况下,在索引中应该首先列出 EMPNO。然后列出 DEPTNO,从而允许 DB2 对第一列(EMPNO)执行直接索引查找,然后针对大于号扫描第二列(DEPTNO)。

而且,如果已经存在关于这两列的索引(一个关于 EMPNO,一个关于 DEPTNO),DB2 可以使用它们来满足该查询,因此创建另一个索引也许是没有必要的。

这种特定查询的重要性 :查询越重要,那么您可能就越应该通过创建索引来进行调优。如果您正在编码 CIO 要每天都运行的查询,那么您应该确保它提供最佳性能。因此,为该特定查询构建索引是很重要的。反之,职员的查询也许就没有必要看得那么重,所以也许应该利用现有索引来执行查询。当然,决定取决于应用程序对业务的重要性 - 而不只是用户的重要性。

索引设计涉及的内容比到目前为止我所讨论的要多得多。例如,您也许要考虑索引重载以实现仅索引访问(index-only access)。如果 SQL 查询要寻找的所有数据都包含在索引中,那么 DB2 也许只使用索引就可以满足该请求。请考虑我们前面的 SQL 语句。给定了关于 EMPNO 和 DEPTNO 的信息,我们要寻找 LASTNAME 和 SALARY。我们还从创建关于 EMPNO 和 DEPTNO 列的索引开始。如果我们在索引中还包含了 LASTNAME 和 SALARY,我们就不再需要访问 EMP 表,因为我们需要的所有数据都已经在索引中。该技术可以大大提高性能,因为它减少了 I/O 请求的数量。

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

Tags:DB 基础 编码

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