Oracle

Oracle中範圍查詢的日期列索引?

  • August 2, 2013

我們有很多:

select count(*) from TBL where XDATE between ? and ? and FLD = ?;

我們希望通過調整XDATE列(具有DATE類型)上的索引來提高性能。

什麼類型的索引更適合DATE類型和條件之間

提供詳細資訊後,兩列索引可能是明智的:

CREATE INDEX tbl_index ON tbl(fld,xdate);

但當然,一切都取決於您的數據。

  • 如果您的查詢返回 >1% 的表全掃描,則很可能會更快。所以根本不需要創建索引
  • 如果 FLD 的選擇性不好,則 (xdate) 上的索引可能會達到類似的結果
  • 每個索引都會增加 DML 操作的成本。除了更改數據,Oracle 還必須更改所有索引並將所有內容記錄在重做日誌中。

要收集數據,只需執行:

select count(*) from TBL;
select count(*) from TBL where XDATE between ? and ?;
select count(*) from TBL where FLD = ?;
select count(*) from TBL where XDATE between ? and ? and FLD = ?;

並比較結果。或使用這些結果編輯您的問題。

引用自:https://dba.stackexchange.com/questions/47462