2013-07-30 119 views
0

我有4個表:SQL多表查詢工作緩慢

bag_of_words(
    ch_id, 
    frequency, 
    number,w_id 
) 

clinical_history(
    ch_complete, 
    ch_id,p_id 
) 

patients(
    p_id, 
    p_name 
) 

words(
    w_id, 
    w_word 
) 

和我有選擇的單詞列表。我需要從表w_word,p_name,number,freqencych_id中選擇。

我有這個疑問,但它是緩慢的,我需要的是更快

SELECT 
    w_word, 
    p_name, 
    number, 
    frequency, 
    bag_of_words.ch_id 
FROM 
    bag_of_words 
LEFT JOIN 
    words 
ON 
    words.w_id=bag_of_words.w_id 
LEFT JOIN 
    clinical_history 
ON 
    bag_of_words.ch_id=clinical_history.ch_id 
LEFT JOIN 
    patients 
ON 
    patients.p_id=clinical_history.p_id 
WHERE 
    words.w_word IN (',,,,,') 
+0

我認爲沒有加入,它會工作得很快,但我找不到方法。 – user2605046

+1

使用索引概念 –

回答

0

您可以使用視圖來提高查詢性能。 (檢查:Views)。順便說一下,你在使用索引嗎?索引也提高了性能。

+0

不,我不使用索引,我會嘗試它。 – user2605046

+0

索引將提高您的表現。並且檢查視圖。創建視圖會提高性能 – cihanblog

+0

有沒有加入查詢的方法 – user2605046

0

嘗試把上w_word索引,並確保所有與您攜手上有索引的列。

如果您仍然收到非常慢的查詢,請嘗試排除連接以確定查詢的哪一部分導致速度變慢。然後專注於優化。

有大量的工具可用於分析個別查詢,並查看需要採取哪些措施來加速它們。

+0

你能推薦任何工具嗎? – user2605046

+0

@ user2605046我沒有使用它,但我認爲http://www.mysql.com/products/enterprise/query.html應該幫助它 – evilbhonda