作者TonyQ (沉默是金)
看板Database
标题Re: [MySQL ] 捞日期的问题
时间Fri May 22 11:28:35 2009
※ 引述《KC73 (肯先生)》之铭言:
: ※ 引述《TonyQ (沉默是金)》之铭言:
: : 如果是 datetime 栏位 , 可以直接用 hour 来作判断比较直觉.
: : 像你要 18点间上课的资料 , 就可以写
: : SELECT * FROM `table_date` WHERE hour( date ) =18
: 建议用 explain 看一下,即使把 Date 设定了 index,应该还会有一个
: full table scan,资料一多,就很慢:
: mysql> explain SELECT * FROM t WHERE HOUR(date)='6'\G
再次感谢这篇文章 , 我之前一直都没注意到有这类工具可以用. :p
本来一直以为 mysql 跟 ms sql 行为应该是不会相去太远 ,
早上用 m$ sql server 本来是想测了一下 isnull .
因为很多地方我懒得写 (xxx is null or xxx < yyy) ,
所以是用 isNull(xxx,预设值) < yyy 的方式写.
(至於为什麽会有 null , 那就不另外赘述了 , 有时候就是会有.XD )
不过我测完发现还是 index scan , 就换测之前这篇的 sample .
好像 m$ sql server 是没有这问题的 , 只有 index scan 没有 table scan,
我不确定是不是我被提示讯息骗了就是. XD
我手上的资料是显示如下
http://tonylovejava.googlepages.com/indexscan.JPG
( table/db name 我遮掉了 , 那应该不重要 , 该表资料笔数3xxx.XD)
substring 的状况我也测了 (先convert 後 substring ),
跟上图显示的资料是几乎一模一样的 .
所以这是我误解了什麽 , 有不一样的环境条件 ,
还是 mysql 在这点行为真的是跟 m$ sql 是有出入的 ?.?
--
ps. 测试环境是 sql server 2008 , 2005前几天被我uninstall了 , 没得测...
--
What do you want to have ? / What do you have?
从书本中,你可以发现我的各种兴趣。
从CD中,你可以了解我所喜欢的偶像明星。
或许从文字你很难以了解一个人,但从物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 221.169.78.140
※ 编辑: TonyQ 来自: 221.169.78.140 (05/22 11:32)
※ 编辑: TonyQ 来自: 221.169.78.140 (05/22 11:33)
1F:推 itsfreya:印象中.没记错的话SQL2005以後的版本 对default function 05/22 22:11
2F:推 itsfreya:可做index查询 另外substring的切法也有差 05/22 22:23