Indexing DB2多列索引问题

Indexing DB2多列索引问题,indexing,db2,Indexing,Db2,如果我有一个多列索引xa,b,c和一个单独的索引d,那么我的查询使用的是b,a,c,d顺序是否同时选择这两个索引?是否为此查询选择索引?在DB2命令行中,尝试以下操作: db2 => explain plan for ...insert-query-here... 在结果中,您将看到何时使用索引以及DB2何时使用全表扫描。如果将其更改为a、b、c、d,则将使用a、b、c索引。 如果将其更改为d、b、a、c或任何以d开头的内容,则将选择d索引。 基本上,按与要使用的索引相同的顺序使用列 基

如果我有一个多列索引xa,b,c和一个单独的索引d,那么我的查询使用的是b,a,c,d顺序是否同时选择这两个索引?是否为此查询选择索引?

在DB2命令行中,尝试以下操作:

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

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

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

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