0
這個問題可能會很奇怪,因爲我對sql的瞭解有限。ORACLE-如何與成本相關的索引
我想優化一個包含數百萬條記錄的數據庫,但我似乎不知道什麼時候有性能。我一直在玩SQL Developer中的'解釋計劃',但這些數字對我來說並不意味着很多。
舉例來說,我有一個表列如下:
ID | Creation_date | End_date | Critical_date | Flag
我跑這樣看這個表的查詢:
SELECT COUNT(ID) FROM TABLE
WHERE FLAG = 1
Creation_date < :p_d_one
End_date > : p_d_two
Critical_date < :p_d_three
這給了我64的成本,使我決定添加索引。
現在我不明白的是,當我創建CREATION_DATE的指標,成本急劇下降 - >(64 - > 9)
CREATE INDEX TABLE_INDEX_CREATION_DATE ON TABLE (Creation_date desc)
但是當我創建和索引的其他領域它不會改變(即使它們也是日期)。
任何想法,如果它仍然值得將它們納入我的索引? 如果他們對成本沒有任何影響,我還應該爲其他查詢創建索引嗎? 是否使用數據庫中的實時統計信息計算成本(基數,...)?
Thx爲您的答案Erich,我可以在契據中包括我的索引中的所有字段。 對於成本沒有變化的查詢,你認爲值得爲它們創建一個新的索引(知道連接到表的許多索引也不好)? – Moufett
也創建索引減慢其他進程,所以我不想避免他們,如果我可以。 – Moufett
實際上,第一個索引是數據的最佳訪問路徑,因爲它更多的索引不能提高查詢性能。在DML語句中創建更多索引也會帶來更多成本。 –