如果我有疑问:
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数据库进行此活动。
答案 0 :(得分:0)
索引连接取决于数据库使用的连接算法。你会在执行计划中看到它。
对于tableA
子句,您可能需要someColumn
上以where
开头的索引。其他一切都取决于连接算法和连接顺序。
如果您发布执行计划,您可能会得到更具体的答案。您还可以在我的网站上阅读有关sql索引的章节“The Join Operation”并尝试自己。
答案 1 :(得分:0)
如果现在没有索引,我猜测复合索引可能会在一个或两个内部联接中使用。我怀疑它会在WHERE子句中使用。
但是我已经做了很长时间了。猜测,就像希望一样,不能很好地扩展。
而不是猜测,你最好学习如何使用DB2's explain and design advisor utilities。期望在开发计算机上首先测试索引。在正在生产的5亿行表中构建一个三列索引不会让你受欢迎。