作者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)
1F:推 JoeHorn:如果要先转 INT 才会快,32-bit 的问题呢? 10/01 22:44
2F:→ JoeHorn:至於容量... 第一篇就讲了... 10/01 22:45
3F:→ JoeHorn:除了可以无视的容量,我感觉不到 DATETIME 有啥不好.. 10/01 22:53
4F:→ JoeHorn:毕竟,目前看来,能放到 9999-12-31 的也就只有它了..XD 10/01 22:53
5F:→ shadowjohn:我看你举例的网页,我以为你只是要拚大小跟速度... 10/01 23:16
6F:→ JoeHorn:如果没转换,速度还是比较快啊;转换则会遇到 overflow... 10/01 23:23
7F:→ JoeHorn:话说... 用 BETWEEN,速度的差距应该还会有变化... 10/01 23:27
8F:→ MOONRAKER:现在写的程式2019年跑不跑都不知道,谁管他9999年啊 -_- 10/02 12:57
9F:→ JoeHorn:喔,请教一下楼上,如果遇到「forever」,该如何定义该值? 10/02 22:57
10F:→ Kelunyang:forever不是时间吧? 10/03 00:32
11F:→ JoeHorn:不然是什麽? 如果让你遇到了,明明有时间栏位可用.. 10/03 02:25
12F:→ JoeHorn:难道还要另外开一个 `forever` 的栏位来记 0 跟 1? 10/03 02:25
13F:→ JoeHorn:当时,就是有人没想 Y2K,有人没想民国百年,不是吗? 10/03 02:30
14F:→ Kelunyang:forever可以用NULL啊,我自己有用过这样@@" 10/03 23:47
15F:→ Kelunyang:不知道其他人有什麽想法 10/03 23:48
16F:推 buganini:只好拿IEEE754的INF来用XD (半误) 10/09 14:34
17F:→ buganini:不过其实应该用NULL就好了 如果没有需要用到这个状态的话 10/09 14:35