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

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

 2008-09-17 16:29:04 来源:WEB开发网   
核心提示: 1) 使 DB2 统计信息保持最新 :如果没有存储在 DB2 系统目录中的统计信息,优化器在优化任何事物时都会遇到困难,DB2 基础: 编码 DB2 SQL 以获得最佳性能(5),这些统计信息向优化器提供了与正在被优化的 SQL 语句将要访问的表状态相关的信息,存储在系统目录中的统计信息的

1) 使 DB2 统计信息保持最新 :如果没有存储在 DB2 系统目录中的统计信息,优化器在优化任何事物时都会遇到困难。这些统计信息向优化器提供了与正在被优化的 SQL 语句将要访问的表状态相关的信息。存储在系统目录中的统计信息的类型包括:

关于 表的信息,包括总的行数、关于压缩的信息和总页数;

关于 列的信息,包括列的离散值的数量和存储在列中的值的分布范围;

关于 表空间的信息,包括活动页面的数量;

索引的当前状态,包括是否存在索引、索引的组织(叶子页的数量和级别的数量)、索引键的离散值的数量以及是否群集索引;

关于表空间和索引节点组或分区的信息。

当执行 RUNSTATS 或 RUN STATISTICS 实用程序时,统计信息就会填充 DB2 系统目录。您可以从控制中心(Control Center)、批处理作业或通过使用命令行处理器来调用该实用程序。一定要与您的 DBA 一起工作以确保在适当的时候积累统计信息,尤其是在生产环境中。

2) 构建适当的索引 :也许您为保证最佳 DB2 应用程序性能而可以做的最重要的事就是根据应用程序使用的查询为您的表创建正确的索引。当然,说总比做更容易。但我们可以从一些基础开始。例如,考虑以下这条 SQL 语句:

  SELECT  LASTNAME, SALARY
  FROM   EMP
  WHERE  EMPNO = '000010'
  AND   DEPTNO = 'D01'

什么索引会对这个简单查询有作用?首先,考虑您可以创建的所有可能的索引。您的第一个简短列表可能看起来如下:

EMPNO 上的 Index1

DEPTNO 上的 Index2

EMPNO 和 DEPTNO 上的 Index3

这是一个好的开始,Index3 可能是最好的。它让 DB2 使用索引来立即查找满足 WHERE 子句中的两个简单谓词的行。当然,如果您已经有许多关于 EMP 表的索引,您也许应该检查再创建另一个关于表的索引所带来的影响。要考虑的因素包括:

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

Tags:DB 基础 编码

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