有什么方法可以针对速度优化以下查询?执行大约需要6秒钟。每个表只包含大约1000条记录,因此它并不大。
SELECT c. * , q.qualification_name, CONCAT( u.firstname, ' ', u.lastname ) AS name, v.venue_name, v.address_town
FROM p_courses c
LEFT JOIN p_qualifications q ON c.qualification_name = q.ref
LEFT JOIN p_users u ON c.instructor_number = u.instructor_number
LEFT JOIN p_venues v ON c.venue_token = v.token
WHERE (
c.status = 'completed'
OR c.status = 'confirmed'
)
上面的查询工作并按要求检索所有数据,只要我添加多个LEFT JOIN就需要很长时间。
感谢。
编辑。
在查询前添加EXPLAIN会返回此...
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE c ALL NULL NULL NULL NULL 1288 Using where
1 SIMPLE q ALL NULL NULL NULL NULL 21
1 SIMPLE u ALL NULL NULL NULL NULL 518
1 SIMPLE v ALL NULL NULL NULL NULL 669
很抱歉,但我不太清楚如何解释。
答案 0 :(得分:0)
EXPLAIN
放在查询前面,检查出错了。EXPLAIN
提示:您可能需要索引:
c.qualification_name
q.ref
c.instructor_number
u.instructor_number
c.venue_token
v.token
c.status
答案 1 :(得分:0)
在你发布的Explain中,它看起来不像查询使用索引。确保将q.ref,u.instructor_number和v.token编入索引