Re: [SQL ] 查詢速度很慢的原因在哪呢?

看板Database (資料庫)作者 (無限MUGEN)時間17年前 (2007/05/14 17:11), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
任何一種資料庫應該都一樣吧 針對某一個column進行INDEX時 若該欄位的重複值多 在 Oracle中 與這有關的 稱為 Cardinality 當Cardinality小 並不適用 B-TREE INDEX 適用 BITMAP INDEX ; 反之, B-TREE INDEX 會有較好的 PERFORMANCE , BITMAP 則否 舉例來說 對一個有千萬筆的table 若其中有一個欄位是記錄男或女, True 或 False...etc. 這種情況就適用 BITMAP INDEX 當然BITMAP INDEX 有其使用的不便,(如 LOCK 的 ISSUE 等) 若該 COLUMN 為具有 UNIQUE 傾向的, 如:身分證號, 學號...等 使用 B-TREE INDEX 會有較佳的效率 而 MySQL 有沒有像 BITMAP這種INDEX 小弟就不清楚了 @@ 若沒辦法使用 DATABASE 的 FEATURE , 那只好從 DESIGN 下手, 也就是說, 必須如原po 切割該欄位這一類的做法, 但是 ... 老實說 , 這麼做有點麻煩 ... 歡迎高手補充 ※ 引述《pandaforme (建 建)》之銘言: : 資料庫:MySql 5.0 : 我有一個table裡面的資料約有38,343,604筆,其中裡面有一個欄位為col1 : 型態是varchar,每一筆長度約在3-10左右,值會有重複,有對此欄位設index。 : 假設查詢語法如下: : select * from table where col1 = "aaaaa" : 結果卻是相當緩慢大約會花上數十秒以上,甚至快兩分鐘 : 查詢結果出來會有好幾百萬行,我認為是table太大有對它作切割 : 即table1放col1欄位值長度為三的資料, table2放col1欄位值長度為四的資料 ... : 但是分割後查詢速度雖然有改善,可是也要花上數十秒以上... : 想請問各位先進是否有其他的方法可以改進呢? : 是伺服器設備不夠好或是MySql在大型資料會表現的不夠好,麻煩大家幫我回答了 : 謝謝回答了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.145.230.2
文章代碼(AID): #16I2VS00 (Database)
文章代碼(AID): #16I2VS00 (Database)