MySQL 索引比較:整數與DateTime
雖然之前的討論比較了沒有索引的Timestamp 和DateTime 欄位類型,但這次查詢特別注意在具有數百萬筆記錄的InnoDB 表中,帶有索引的DateTime 與索引的int 的效能比較。
在這些場景中,帶條件的查詢是基於:
實證評估
使用MySQL 5.1.41 和1000 萬筆記錄的初始測試顯示int 具有顯著的速度優勢:
Query | DateTime with Index (sec) | int with Index (sec) |
---|---|---|
COUNT(*) | 120.27 | 25.02 |
BETWEEN | 8.41 | 1.56 |
解釋
int的效率歸功於索引可以直接與查詢條件進行比較,無需MySQL解析和轉換日期。相反,DateTime 需要額外的處理來提取和比較日期和時間分量。其他注意事項
對儲存在同一表中的兩種欄位類型進行的後續測試產生了相似的結果效能,表明MySQL 可以透過識別DateTime和int 值的等價性來最佳化查詢。結論
根據這些結果,建議存儲日期和時間如果基於索引的查詢的性能至關重要,則為 int(UNIX 時間戳)。這種最佳化可以顯著減少查詢執行時間,特別是在具有頻繁基於日期的條件的大型資料庫中。以上是對於大型資料集,整數索引比日期時間索引更快嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!