Mysql SQL多表查询工作缓慢

Mysql SQL多表查询工作缓慢,mysql,sql,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\u word,p\u name,编号,频率,以及ch\u id中进行选择 我有这个查询,但

我有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\u word
p\u name
编号
频率
,以及
ch\u 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 (',,,,,')

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

如果您仍然得到非常慢的查询,请尝试消除连接,以确定查询的哪一部分导致了速度慢。然后集中精力优化它


有很多工具可用于分析单个查询,并查看需要执行哪些操作来加快查询速度。

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

我认为如果没有加入,它会运行得很快,但我找不到方法。你能推荐任何工具吗?@user2605046我没有使用过它,但我认为它应该有助于提高你的性能。并检查视图。创建视图将提高性能有一种不用连接进行查询的方法,您可以使用子查询而不是连接。但是我建议你使用join。是否检查了创建视图?视图或创建临时表是否更好?