作者RedMapleWing (闇夜 楓)
看板Database
標題[SQL ] mysql執行效率問題
時間Fri Dec 30 13:54:45 2011
我有一段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