我正在查看一些表源代码,我不确定索引是如何工作的。这是我看到的例子。
CREATE INDEX INDEXNAME ON AWARD ( AWARD_ID, CUST_ID );
我不明白参数值的含义。是每个列的索引,还是它们组合在一起成为索引。
答案 0 :(得分:2)
这是一个包含两个字段的索引。索引通常用于选择,加入,分组和/或排序。
要实现的关键是多列索引从左到右是有用的。
对于选择,如果你有一个看似
的where子句,这样的索引会非常有用WHERE AWARD_ID = 123 AND CUST_ID = 456
如果对
也有帮助WHERE AWARD_ID = 123
但可能没有(直接)帮助
WHERE CUST_ID = 456
由于未引用索引的最左列(AWARD_ID)。
以类似的方式加入作品。
--index useful
FROM TBLA JOIN AWARD USING (AWARD_ID,CUST_ID)
or
FROM TBLA JOIN AWARD USING (AWARD_ID)
--index NOT useful
FROM TBLA JOIN AWARD USING (CUST_ID)
和排序和分组一样。
如果您恰好使用DB2 for IBM i,以下文章是一个很棒的资源:
如果是DB2 LUW,有关位图索引的部分可能适用,但忽略有关EVI索引的信息。另请参阅DB2 LUW信息中心的规划和性能子部分索引部分 http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.admin.perf.doc/com.ibm.db2.luw.admin.perf.doc-gentopic8.html