DB2 EXPLAIN 命令是不是包含 INSERT 语句的索引更新成本
Posted
技术标签:
【中文标题】DB2 EXPLAIN 命令是不是包含 INSERT 语句的索引更新成本【英文标题】:Does DB2 EXPLAIN command include cost of index update for INSERT statementsDB2 EXPLAIN 命令是否包含 INSERT 语句的索引更新成本 【发布时间】:2014-05-26 05:53:45 【问题描述】:我们目前正在考虑改进我们对一组表的索引。我在 EXPLAIN 输出中看到的是当在表上创建适当的索引时某些 SELECT 查询的性能改进。但是我不知道 EXPLAIN 是否还包括在 INSERT(和 UPDATE)语句中产生的额外索引成本。
我创建了一个测试插入语句,但无论我在某个表上创建的索引如何,它都会显示相同的 timeron 成本。
感谢您的意见!
【问题讨论】:
【参考方案1】:来自IBM manual。
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 多于更改的系统,索引成本通常是值得的。
【讨论】:
我在测试数据库上尝试了我的 SELECT 和 INSERT 语句。当我更改表的索引时,SELECT 语句的估计时间成本确实发生了变化。然而,无论我在表上声明哪种索引,INSERT 语句的成本都保持不变。手册中的信息并未具体说明相关索引更改的成本是否包含在 INSERT 语句的估计成本中。对此有何其他指示? @markus:同样,对于 UPDATE 和 DELETE WHERE CURRENT OF,以及对于 INSERT,提供的信息要少一些。所以不,INSERT 解释没有帮助。只需在您的测试数据库上使用实际的 select 和 insert 语句运行实验。 好吧对不起我的评论。现在我明白了。感谢您的努力。以上是关于DB2 EXPLAIN 命令是不是包含 INSERT 语句的索引更新成本的主要内容,如果未能解决你的问题,请参考以下文章