了解连接查询

时间:2015-10-18 16:05:24

标签: mysql join

我想了解联接查询的过程。

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"去,它需要所有项目并在"其中"后应用过滤器。对吗?

抱歉我的英语不好,我是法国人。

1 个答案:

答案 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'中的差异。第一次查询在遇到大数据时效率很高。希望这会有所帮助。