1
我已經用了這是真正的長時間來執行(約3" 站內搜索引擎查詢或更多)。優化聯合查詢
我如何改進/優化/‘讓它更快’它,因爲我需要做「聯盟」兩個查詢的
SELECT id, name, rank, 1 as SortKey FROM MyTable WHERE name LIKE 'test'
UNION SELECT id, name, rank, 2 as SortKey FROM MyTable WHERE name LIKE '%test%'
ORDER BY CASE WHEN SortKey > 0 THEN 0
WHEN rank > 0 THEN 1
WHEN rank = 0 THEN 2
ELSE 3 END,
SortKey ASC, rank ASC LIMIT 0,12
另外,我必須做2個搜索在MyTable的(約25萬線)
1 - 我尋找確切的詞:?「測試 '在名字欄中。這應該是整個查詢結果中的第一個結果。
2-然後,我在名稱列中搜索較大的術語「%test%」,而沒有第一個查詢的結果。
I.e. :
Mytable
id name rank
1 Robert 3
2 Roberta 5
3 Mark 8
4 Sophia 12
5 Robertina 1
1 - 我做 '羅伯特' 搜索:
Mytable
id name rank
1 Robert 3
UNION 2 - 我做一搜 '%羅伯特%':
Mytable
id name rank
1 Robert 3
2 Roberta 5
5 Robertina 1
最終結果:
Mytable
id name rank
1 Robert 3
5 Robertina 1
2 Roberta 5
謝謝!
感謝sgedded。我使用時間計數器在極簡主義PHP腳本上進行嘗試,您的建議在UNION的0.628秒時爲1.652秒。 –