作者shadowjohn (3WA問題解決專家)
看板PHP
標題Re: [討論] PHP 在 MySQL 用 UNIXTIMESTAMP 與 DAT …
時間Fri Oct 1 22:07:37 2010
※ 引述《JoeHorn (每天都在公司玩OLG)》之銘言:
: → Kelunyang:用int存實作compare的時候搜尋速度應該也比string這些 09/30 12:52
: → Kelunyang:快吧@@? 09/30 12:53
: 依據這個測試看來,似乎是 DATETIME 比較好:
: * MySQL DATETIME vs TIMESTAMP vs INT performance and benchmarking with MyISAM
: http://goo.gl/6XZe
: * MySQL DATETIME vs TIMESTAMP vs INT performance and benchmarking with InnoDB
: http://goo.gl/cOqD
: 另外,BETWEEN 的 benchmark 也是值得試試看的。 :p
作者的結論~
Anyway, what I’ve tried to demonstrate was usage scenarios that you’ll
need to consider for your own real cases:
INT remain smaller in storage (50%) and will only perform better if INSERTs
and SELECTs are already fed with an INT value - and this is specially
relevant for WRITE-intensive scenarios -
but DATETIME alleviates extra responsability/care from the developer.
Programmers don’t usually care about this, and want the most flexibility
from the database, so it’s up to you to find with them a compromise. I may
have provided both enough arguments for an endless discussion, though…
我文章看下來,int 確實比較小又比較快,但:
需注意的是,你在下 select ,查詢的內容必需先行轉成用(timestamp)int 的值去算
才會快
如果你在下查詢還要把資料庫的值翻轉跟你要日期比對,那當然慢。
所以他的圖表才會分成 int 跟 int * 吧
但 如果使用 datetime 就不用考慮這麼多。
如果是這樣,我倒覺得 int 的確比較小,寫查詢時注意一下有沒有先把要查的時間
轉成 (timestamp)的int ,如此一來,確實可以比較快些。
我應該沒看錯文章內容吧,請多指教~
--
3WA訓練家的工作室
宗旨:諸葛單中,謝謝
個人佈弱格 網址:
http://3wa.tw
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.240.83.60
※ 編輯: shadowjohn 來自: 123.240.83.60 (10/01 22:09)
※ 編輯: shadowjohn 來自: 123.240.83.60 (10/01 22:11)
推 JoeHorn:如果要先轉 INT 才會快,32-bit 的問題呢? 10/01 22:44
→ JoeHorn:至於容量... 第一篇就講了... 10/01 22:45
→ JoeHorn:除了可以無視的容量,我感覺不到 DATETIME 有啥不好.. 10/01 22:53
→ JoeHorn:畢竟,目前看來,能放到 9999-12-31 的也就只有它了..XD 10/01 22:53
→ shadowjohn:我看你舉例的網頁,我以為你只是要拚大小跟速度... 10/01 23:16
→ JoeHorn:如果沒轉換,速度還是比較快啊;轉換則會遇到 overflow... 10/01 23:23
→ JoeHorn:話說... 用 BETWEEN,速度的差距應該還會有變化... 10/01 23:27
→ MOONRAKER:現在寫的程式2019年跑不跑都不知道,誰管他9999年啊 -_- 10/02 12:57
→ JoeHorn:喔,請教一下樓上,如果遇到「forever」,該如何定義該值? 10/02 22:57
→ Kelunyang:forever不是時間吧? 10/03 00:32
→ JoeHorn:不然是什麼? 如果讓你遇到了,明明有時間欄位可用.. 10/03 02:25
→ JoeHorn:難道還要另外開一個 `forever` 的欄位來記 0 跟 1? 10/03 02:25
→ JoeHorn:當時,就是有人沒想 Y2K,有人沒想民國百年,不是嗎? 10/03 02:30
→ Kelunyang:forever可以用NULL啊,我自己有用過這樣@@" 10/03 23:47
→ Kelunyang:不知道其他人有什麼想法 10/03 23:48
推 buganini:只好拿IEEE754的INF來用XD (半誤) 10/09 14:34
→ buganini:不過其實應該用NULL就好了 如果沒有需要用到這個狀態的話 10/09 14:35