Query-Performance
嵌套查詢的最佳索引?
我有一個嵌套查詢,我不確定我選擇的索引是否適合它的需要。目前我對它的表現並不滿意。該表包含 > 2 個 Mio 行計數。我正在與甲骨文合作。
我的查詢:
SELECT * FROM mytable where groupid IN ( SELECT groupid FROM mytable where contractid IN (:contractids:) or predecessorContractId in (:contractIds:) );
contractId
: 有很多不同的存在groupId
:連接的行(predecessorContractId 匹配contractId)共享相同的groupId,以便能夠更有效地選擇合約鏈。也有很多。我的索引:
CREATE INDEX "MyIndex" ON "MyTable" ("contractId", "predecessorContractId", "groupId");
有沒有辦法提高我的指數?也許也是我的查詢?
如果我做對了,
您從一組契約 ID 開始收集與它們相對應的一組組 ID。然後,您想要收集該集合中具有組 ID 的所有行。
根據定義,這意味著 DBMS 必須進行表掃描。您最好的機會是創建第二個索引,其中組 ID 是第一個屬性(例如組 ID、契約 ID)。然後,系統可以選擇使用第二個索引獲取“所有具有此類組 id 的行”(在消除在步驟 1 中找到的重複組 id 之後)。
為了提供predicateContractId 上的謂詞,您還需要第三個索引,其中previousContractId 是第一個屬性。