看板 Database 關於我們 聯絡資訊
我有一段sql碼是這樣 SELECT a . * , b . * , c . * FROM comp_main AS a, comp_contact AS b, comp_index AS c WHERE a.briefIntro LIKE '%led%' AND b.main_sn = a.sn AND a.sn = c.comp AND ( c.rank = '3' OR c.rank = '4' ) ORDER BY c.rank ASC LIMIT 0 , 10 目的是在三張資料表中撈出廠商的資料 三張資料表的設計分別是 comp_main(廠商資料) comp_contact(廠商聯絡資訊) comp_index(所屬分類及層級) 本來在公司網站內部資料不多的時候撈都沒什麼問題 但近日新增了近2萬筆資料進去 就收到回報說搜尋系統掛掉了 實測後發現是這段程式碼餵給mysql後需要的執行時間非常的久 請問我是該改sql 還是往規劃搜尋的部份努力? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.133.251
LINGZ:1.別抓全部欄位(*),2.where & order by中的欄位加index 12/30 17:48
LINGZ:第1點改程式,第2點改DB. 12/30 17:49
danielguo:LIKE '%led%' 無法用index, 會 full table scan 12/30 18:40
danielguo:你用 explain 顯示就知道怎麼跑的 12/30 18:41