Oracle
Oracle中範圍查詢的日期列索引?
我們有很多:
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 = ?;
並比較結果。或使用這些結果編輯您的問題。