SQL多表查询工作缓慢

时间:2013-07-30 13:12:45

标签: mysql sql

我有4张桌子:

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_wordp_namenumberfreqencych_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 (',,,,,')

2 个答案:

答案 0 :(得分:0)

尝试在w_word上添加索引,并确保您加入的所有列都有索引。

如果您的查询仍然很慢,请尝试删除联接以确定查询的哪个部分导致速度减慢。然后集中精力优化它。

有很多工具可用于分析各个查询,并了解需要采取哪些措施来加快速度。

答案 1 :(得分:0)

您可以使用视图来提高查询性能。 (检查:Views)。顺便问一下,你使用索引吗?索引也会提高性能。