我有三个表,tag是其中两个表中的列(在第二个表中,多个行中存在相同的标记),它们都设置为Varchar(70)并编入索引为全文。 the_id是第一个表中的一列(它不是主要ID,但被索引为索引)。
所以我的问题是,为什么这个查询需要4到8秒才能响应:
SELECT * FROM table_1 LEFT JOIN table_3 ON(table_1.the_id = table_3.id)LEFT JOIN table_2 ON table_1.tag = table_2.tag WHERE table_2.bad = 0 GROUP BY table_1.the_id
(我使用此查询来确保在第二个表中至少有一行没有设置为坏,并且我通过the_id分组不显示具有相似标签的重复条目但是相同的the_id,我用它来通过它的主要ID)加入第三个表格
解释查询:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | simple | table_1 | ALL | tag | NULL | NULL | NULL | 2809 | Using temporary; Using filesort
1 | simple | table_2 | ALL | bad,tag | NULL | NULL | NULL | 3689 | Using where
1 | simple | table_3 | eq_ref | PRIMARY |PRIMARY| 8 |the_id | 1 |