SQL查询哪一个更快

时间:2017-07-20 18:06:58

标签: sql

第一个查询是

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

我没有大数据,我无法尝试。有人可以帮帮我吗?哪个更快,为什么?

3 个答案:

答案 0 :(得分:1)

交叉连接{classes,users}为您提供了m X n记录的交叉产品,并对其应用了过滤器,而其他方法直接使用左连接并获取所需数据,因此第二次查询将更快更好

答案 1 :(得分:1)

第二次查询更快。

第一个查询组合了类和用户的所有选项,然后按照where子句中指定的条件进行过滤。

第二个查询会在浏览所有选项时进行过滤。

答案 2 :(得分:0)

查询截然不同。

第一个是在每个班级重复用户0后 - 进行内部联接。第二个是保留所有类,当用户不匹配时,其值为NULL

首先,您应该使用正确实现所需逻辑的查询。正确性比表现更重要。

其次,你不应该在FROM子句中使用逗号。 始终使用正确的JOIN语法。

第三,第二个可能就是你想要的。它具有更合理的结果集。