2012-07-04 43 views
1

有人可以建議我改進以下查詢。有人可以提出一個查詢改進

$q = " 
    SELECT q. * 
     FROM questions q, answers a 
    WHERE q.questions LIKE '%".$str."%' 
     OR a.answers LIKE '%".$str."%' 
     AND q.id = a.id_questions 
    GROUP BY q.id 
    LIMIT 10" 

它用於在數據庫上搜索> 100.000個問題和答案。

以較少的記錄工作正常,但現在......

即使有限制10服務器消失

感謝

+0

哪個數據庫服務器是你使用? – Baz1nga

+1

更不用說,使用'LIKE'%string%''搜索這些列上的平均索引是無法使用的。 –

+0

mysql數據庫服務器 –

回答

2

試試這個:

SELECT  q.* 
FROM  questions q 
INNER JOIN answers a 
ON   q.id = a.id_questions 
WHERE  q.questions LIKE '%yourstring%' 
OR   a.answers LIKE '%yourstring%' 
GROUP BY q.id 
+0

是的,它的工作原理。謝謝 –

+0

順便說一句:你是否清理你的數據庫輸入?與mysql_real_escape_string一起使用 – jexact

+0

... –

相關問題