第一个查询是
Select Name
, Surname
, ClassID
from classes
, users
where classes.UserId = users.UserID
OR classes.UserID = 0
第二个查询是
Select Name
, Surname
, ClassID
from classes
left
join users
on classes.UserId = users.UserID
classes表有UserID 0变量,我添加查询OR classes.UserID = 0
我没有大数据,我无法尝试。有人可以帮帮我吗?哪个更快,为什么?
答案 0 :(得分:1)
交叉连接{classes,users}为您提供了m X n记录的交叉产品,并对其应用了过滤器,而其他方法直接使用左连接并获取所需数据,因此第二次查询将更快更好
答案 1 :(得分:1)
第二次查询更快。
第一个查询组合了类和用户的所有选项,然后按照where子句中指定的条件进行过滤。
第二个查询会在浏览所有选项时进行过滤。
答案 2 :(得分:0)
查询截然不同。
第一个是在每个班级重复用户0后 - 进行内部联接。第二个是保留所有类,当用户不匹配时,其值为NULL
。
首先,您应该使用正确实现所需逻辑的查询。正确性比表现更重要。
其次,你不应该在FROM
子句中使用逗号。 始终使用正确的JOIN
语法。
第三,第二个可能就是你想要的。它具有更合理的结果集。