0

我们目前正在考虑改进我们在一组表上的索引。我在 EXPLAIN 输出中看到的是当在表上创建适当的索引时某些 SELECT 查询的性能改进。但是我不知道 EXPLAIN 是否还包括在 INSERT(和 UPDATE)语句中产生的额外索引成本。

我创建了一个测试插入语句,但无论我在某个表上创建的索引如何,它都会显示相同的时间成本。

感谢您的投入!

4

1 回答 1

1

直接来自IBM 手册

EXPLAIN 数据包含有关 DB2 用于处理 SQL 语句的访问路径的信息。EXPLAIN 数据的主要用途是调查语句中 SELECT 部分的访问路径。例如,EXPLAIN 表中的数据描述:

每次访问表时是否使用索引访问或表空间扫描。使用索引访问时,使用了多少个索引和索引列,使用了哪些类型的 I/O 方法来读取数据页。使用的连接方法和类型,以及 DB2 连接表的顺序。DB2 何时以及为何对数据行进行排序。

对于 UPDATE 和 DELETE WHERE CURRENT OF,以及对于 INSERT,提供的信息要少一些。EXPLAIN 数据没有描述所有或所有类型的访问。例如,对与基表分开存储的 LOB 值的访问,以及对强制引用约束所需的父表或从属表的访问,都不会显示在 EXPLAIN 表数据中。

您需要在测试 DB2 系统上进行试验,是否值得在 INSERTS、UPDATES 和 DELETES 中添加索引以帮助 SELECT 更好地执行。对于大多数 SELECTS 多于更改的系统,索引成本通常是值得的。

于 2014-05-26T09:37:32.177 回答