正如你可以看到Oracle可以利用兩個索引並解決整個查詢而無需通過rowid訪問表?Oracle:利用使用兩個索引
SELECT 'Scarti letture GAS' tipo, campo47 pdf, COUNT (1) n
FROM out.CONSUMI_GEE_LC_T500_00 v
WHERE stato = 'SC'
AND stato is not null
AND campo47 is not null
GROUP BY 'Scarti letture GAS', campo47;
我已經做了一個測試,添加字段campo47到STATO索引。性能從1'49''增加到0,6s。
有關stato的索引不具有選擇性。 campo47上的索引(意思是field47)真的很有選擇性。
我該如何測試插入/選擇性能指數?即用(STATO,CAMPO47)替代STATO上的指數,或者刪除STATO和Campo47上的指數,並將它們替換爲只有一個指數(STATO,CAMPO47)。 – Revious 2012-04-04 09:19:26
我認爲Oracle應該通過訪問所有rowid與stato ='SC',然後快速完整地索引掃描campo47上的索引並通過rowid進行搜索,並直接返回resutl而不訪問表。 – Revious 2012-04-04 09:22:52
@APC你可以給我發一封電子郵件'管理員在sqlfiddle點com'或只是鏈接它在這裏,你遇到的執行計劃sqlfiddle發現問題的一個例子?謝謝 – 2012-04-04 17:14:13