這包括兩個問題:MySQL中datetime列的時間戳速度要快多少?
是MySQL的時間戳字段真快於查詢「按訂單」日期時間字段?
如果上述問題的答案是肯定的,它可能會快多少?假設在一個1億行的表中,並經常根據MySQL中的時間戳字段對一堆100-200k行進行排序,通過在外部程序中將時間戳轉換爲可讀的字符串格式,排序時間改進是否會被取消?
這包括兩個問題:MySQL中datetime列的時間戳速度要快多少?
是MySQL的時間戳字段真快於查詢「按訂單」日期時間字段?
如果上述問題的答案是肯定的,它可能會快多少?假設在一個1億行的表中,並經常根據MySQL中的時間戳字段對一堆100-200k行進行排序,通過在外部程序中將時間戳轉換爲可讀的字符串格式,排序時間改進是否會被取消?
找出最簡單的方法是編寫一個單元測試,並實際獲得一些數字。
我的理論是,時間戳會更快,但按照這個博客我錯了: http://dbscience.blogspot.com/2008/08/can-timestamp-be-slower-than-datetime.html
這就是爲什麼我傾向於得到的數字,通過分析,我才決定在哪裏進行優化,因爲我的直覺感覺有時可能是相當錯誤的。
因此,它可能取決於您使用的MySQL版本,但看起來datetime可能會更快。
從我所知道的來看,使用TIMESTAMP超過DATETIME的主要好處是能夠自動將值設置爲行創建的當前時間,並且可以將其設置爲(或者稍微省力一點)到行更新的當前時間。這允許自動創建和修改日期。
因爲TIMESTAMP列的其他限制(例如,不被接受一定範圍內的或改變,如果服務器時區的變化以外的日期),DATETIME將是最好,如果你不需要一以上兩個特徵。但是,如果你只是希望在數據庫中存儲一個Unix時間戳,而不需要數據庫來轉換它,那麼你可以直接將它存儲爲一個無符號整數,並獲得稍微的性能。
同樣的故事在這裏:http://www.dbtuna.com/article.asp?id=36 – 2009-11-01 04:37:10