连接中列的复合索引和位置

时间:2011-11-30 08:15:57

标签: database optimization indexing

如果我有疑问:

Select *
From tableA
Inner Join tableB ON tableA.bId = tableB.id
Inner Join tableC ON tableA.cId = tableC.id
where
tableA.someColumn = ?

创建复合索引(bId,cId,someColumn)可以获得任何性能优势吗?

我正在使用DB2数据库进行此活动。

2 个答案:

答案 0 :(得分:0)

索引连接取决于数据库使用的连接算法。你会在执行计划中看到它。

对于tableA子句,您可能需要someColumn上以where开头的索引。其他一切都取决于连接算法和连接顺序。

如果您发布执行计划,您可能会得到更具体的答案。您还可以在我的网站上阅读有关sql索引的章节“The Join Operation”并尝试自己。

答案 1 :(得分:0)

如果现在没有索引,我猜测复合索引可能会在一个或两个内部联接中使用。我怀疑它会在WHERE子句中使用。

但是我已经做了很长时间了。猜测,就像希望一样,不能很好地扩展。

而不是猜测,你最好学习如何使用DB2's explain and design advisor utilities。期望在开发计算机上首先测试索引。在正在生产的5亿行表中构建一个三列索引会让你受欢迎。