我想了解联接查询的过程。
SELECT template.*
FROM template_item AS template
JOIN items ON items.id = template.id
WHERE items.user_id = 1 AND template.type != 'short';
SELECT template.*
FROM template_item AS template
JOIN items ON items.id = template.id AND items.user_id = 1
WHERE template.type != 'short';
哪一个更好?
在第一个查询中,作为" join"去,它需要所有项目并在"其中"后应用过滤器。对吗?
抱歉我的英语不好,我是法国人。
答案 0 :(得分:0)
SELECT template.*
FROM template_item AS template
JOIN items ON items.id = template.id AND items.user_id = 1
WHERE template.type != 'short';
可能是更好的一个,因为它在“加入”期间否定了该列。
尝试
EXPLAIN SELECT template.*
FROM template_item AS template
JOIN items ON items.id = template.id AND items.user_id = 1
WHERE template.type != 'short';
AND
EXPLAIN SELECT template.*
FROM template_item AS template
JOIN items ON items.id = template.id
WHERE items.user_id = 1 AND template.type != 'short';
查看'no.of rows'中的差异。第一次查询在遇到大数据时效率很高。希望这会有所帮助。