DB2多列索引问题

时间:2009-02-25 11:47:25

标签: indexing db2

如果我有一个多列索引(a,b,c)和一个单独的索引d,那么我的查询是使用b,a,c,d命令是否同时选择索引?是否会为此查询选择索引?

3 个答案:

答案 0 :(得分:0)

在DB2命令行中,试试这个:

db2 => explain plan for ...insert-query-here...

在结果中,您将看到何时使用索引以及何时DB2将使用全表扫描。

答案 1 :(得分:0)

如果将其更改为a,b,c,d,则将使用(a,b,c)索引。
如果将其更改为d,b,a,c(或以d开头的任何内容),将选择(d)索引。
基本上,使用与您要使用的索引相同顺序的列。

答案 2 :(得分:0)

基于成本的优化器(例如DB2)将使用表和索引对象的统计信息来确定(A,B,C)索引或(D)索引是否更适合给定查询。索引基数(索引中的唯一值的数量)是RUNSTATS命令收集的几个数据统计信息之一,以帮助优化器估计每个可能的访问路径的相对I / O和CPU成本。 Aaron Digulla的答案中提到的explain命令以及db2expln工具可以帮助您了解将选择哪个索引。