在MySQL 中為DATETIME 欄位的日期部分建立索引
在MySQL 中,在列上使用函數進行查詢,例如日期( TranDateTime),可以繞過索引,導致效能下降。若要最佳化 DATETIME 欄位的日期部分的查詢,請考慮在該部分上建立索引。
問題
包含名為 TranDateTime 的 DATETIME欄位的大型表使用以下方式查詢特定日期的記錄時效能緩慢:
SELECT * FROM transactionlist WHERE date(TranDateTime) = '2008-08-17'
解決方案
為了提高效能,請使用以下查詢在TranDateTime 的日期部分建立索引:
CREATE INDEX idx_TranDate ON transactionlist (DATE(TranDateTime))
索引將允許MySQL 根據以下查詢高效檢索記錄: TranDateTime欄位的日期部分,最佳化以下查詢:
SELECT * FROM transactionlist WHERE DATE(TranDateTime) = '2008-08-17'
附加註意事項
或者,為了避免在查詢中使用函數,請考慮使用範圍查詢:
SELECT * FROM transactionlist WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';
此查詢應檢索2008 年8 月17 日發生的所有記錄,包括那些帶有時間成分的。
以上是如何最佳化 MySQL 對 DATETIME 欄位的日期部分的查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!