看板 Database 關於我們 聯絡資訊
※ 引述《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)
itsfreya:印象中.沒記錯的話SQL2005以後的版本 對default function 05/22 22:11
itsfreya:可做index查詢 另外substring的切法也有差 05/22 22:23