如何根據日期選擇MySQL 記錄而不考慮時間
在使用包含日期時間列的表時,通常需要檢索特定日期的記錄,無論它們發生的時間如何。但是,使用簡單的日期比較可能效率低下,並且會妨礙索引利用率。
錯誤的方法涉及選擇應用於日期時間列的日期函數與所需日期匹配的記錄,例如:
SELECT * FROM tablename WHERE DATE(columnname) = '2012-12-25'
此查詢需要MySQL 計算每一行的日期,這對於大型資料集來說可能是計算密集型且緩慢的。此外,在 WHERE 子句中使用計算會阻止使用日期時間列上的索引來最佳化查詢。
相反,更有效的方法是定義代表一整天的日期時間值範圍,確保它包括特定日期的開始和結束。這是使用 BETWEEN 子句實現的:
SELECT * FROM tablename WHERE columnname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
此修改後的查詢允許 MySQL 在日期時間列上使用索引,從而顯著提高效能。需要注意的是,這種方法可確保選擇全天的記錄,無論它們發生的時間如何。
請注意,在MySQL 的最新版本中,建議使用以下語法以避免潛在的問題歧義性:
SELECT * FROM tablename WHERE columnname >= '2012-12-25 00:00:00' AND columnname < '2012-12-26 00:00:00'
透過遵循這些準則,您可以根據日期高效地選擇記錄,而無需考慮MySQL 中的時間,從而確保最佳的資料庫效能。
以上是如何有效率地按天選擇 MySQL 記錄,忽略時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!