我们目前正在研究改进我们在一组表上的索引。我在EXPLAIN输出中看到的是在表上创建适当的索引时某些SELECT查询的性能改进。但是我不知道EXPLAIN是否还包括INSERT(和UPDATE)语句中的成本附加索引。
我创建了一个测试插入语句,但无论我在某个表上创建的索引如何,它都会在timeron中显示相同的开销。
感谢您的投入!
答案 0 :(得分:1)
直接来自IBM manual。
EXPLAIN数据包含有关DB2用于处理SQL语句的访问路径的信息。 EXPLAIN数据的主要用途是调查语句的SELECT部分的访问路径。例如,EXPLAIN表中的数据描述:
是否对表的每次访问使用索引访问或表空间扫描。 使用索引访问时,使用了多少索引和索引列 使用哪种类型的I / O方法来读取数据页。 使用的连接方法和类型,以及DB2连接表的顺序。 DB2何时以及为何对数据行进行排序。
对于UPDATE和DELETE WHERE CURRENT OF,对于INSERT,提供的信息稍少。 EXPLAIN数据不描述所有或所有类型的访问。例如,对EXPLOB表数据中不显示对LOB值的访问,这些值与基表分开存储,以及对强制引用约束所需的父表或从属表的访问。
您需要在测试DB2系统上进行试验,无论是否添加索引以帮助SELECT更好地执行,都值得在INSERTS,UPDATES和DELETES中花费成本。对于大多数SELECTS比变化多的系统,索引成本通常是值得的。