2011-11-30 21 views
1

如果我有一個查詢:在列複合索引聯接和地方

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

這完全取決於DBMS。您的數據庫管理系統的執行計劃可以及時回答這個問題。 –

回答

0

索引連接取決於數據庫使用的連接算法。你會在執行計劃中看到。

對於where子句,您可能需要tableA上的索引,並以someColumn開頭。其他一切都依賴於連接算法和連接順序。

如果您發佈執行計劃,您可能會得到更具體的答案。你也可以在我的網站上閱讀關於sql索引的章節「The Join Operation」並嘗試一下。

0

如果現在沒有索引,我想猜想組合索引可能在一個或兩個內部聯接中使用。我懷疑它會在WHERE子句中使用。

但我一直在做這個東西很長一段時間。猜測,像希望的那樣,不能很好地擴展。

不要猜測,你最好學習如何使用DB2's explain and design advisor utilities。期望在開發計算機上測試諸如索引的索引。在生產的5億行桌子上建立一個三列索引而不是讓你受歡迎。