作者 主題: >= 無法配會index?  (閱讀 3393 次)

0 會員 與 1 訪客 正在閱讀本文。

yes298

  • 活潑的大學生
  • ***
  • 文章數: 380
    • 檢視個人資料
>= 無法配會index?
« 於: 2007-07-03 16:40 »
小弟有將一MySQL表格t1的int欄位studendID (非主鍵) 設為index,用explain發現,當select時,若用select * from t1 where studentID=99 ,此時index studentID是有發揮功效, 但若用select * from t1 where studentID >= 99 時卻見到結果如下:
代碼: [選擇]
id  : 1
select_type : SIMPLE
table : t1
type : ALL
possible_keys : NULL
key : NULL
key_len : NULL
ref : NULL
rows : 359644
Extra  : Using where


為何大過等於,index會無法發揮效用的, 請指教!~

yes298

  • 活潑的大學生
  • ***
  • 文章數: 380
    • 檢視個人資料
>= 無法配會index?
« 回覆 #1 於: 2007-07-04 09:26 »
經試驗發現: 若index是設為DESC的, 當用 >= 是不會用到index的,
<= 則可以,  若index是設為ASC的話, 則剛好相反, 但兩者都可以用到between .. and.

真有點無理解, 請各位大哥指教一下!

yes298

  • 活潑的大學生
  • ***
  • 文章數: 380
    • 檢視個人資料
>= 無法配會index?
« 回覆 #2 於: 2007-07-04 15:18 »
studentID共有130組別的資料,值的變化由100至230,若用
select * from t1 studentID between 100 and 134;
是會用到index, 但若用
select * from t1 studentID between 100 and 135;
開始就無法用到index了, 經反複試驗, 發覺between與and之間的值不能相差超過35 (不到130組資料的30%) , 否則用不到index,

如何通過mysql去設定,調整,令between與and之間相差大一些仍可用到index, 是改max_seeks_for_key的值嗎?

請指教 !