如果我有一個查詢:在列複合索引聯接和地方
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數據庫進行此活動。
如果我有一個查詢:在列複合索引聯接和地方
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數據庫進行此活動。
索引連接取決於數據庫使用的連接算法。你會在執行計劃中看到。
對於where
子句,您可能需要tableA
上的索引,並以someColumn
開頭。其他一切都依賴於連接算法和連接順序。
如果您發佈執行計劃,您可能會得到更具體的答案。你也可以在我的網站上閱讀關於sql索引的章節「The Join Operation」並嘗試一下。
如果現在沒有索引,我想猜想組合索引可能在一個或兩個內部聯接中使用。我懷疑它會在WHERE子句中使用。
但我一直在做這個東西很長一段時間。猜測,像希望的那樣,不能很好地擴展。
不要猜測,你最好學習如何使用DB2's explain and design advisor utilities。期望在開發計算機上測試諸如索引的索引。在生產的5億行桌子上建立一個三列索引而不是讓你受歡迎。
您使用的是哪種數據庫供應商和產品? –
這完全取決於DBMS。您的數據庫管理系統的執行計劃可以及時回答這個問題。 –