2011-10-27 99 views
3

任何一个可以建议哪一个是在这种情况下,更好地:在SQl查询中哪个更好的子查询或JOIN?

1:

SELECT 
    COLUMN1, 
     (SELECT 
      COLUMN2 
     FROM 
      TABLE2 
     WHERE 
      <some condition>) AS COLUMN2 
FROM TABLE 1 

2:

SELECT 
    T1.COLUMN1, 
    T2.COLUMN2 
FROM 
    TABLE1 T1 
INNER JOIN 
    TABLE2 T2 ON <some condition> 
+4

更好的查询是返回所需结果的那个。我猜想可能会出现两种查询可以互换的情况,但并不总是这样。如果您从给定条件的子查询中获取多个行,则子查询版本将失败。 –

+1

更好的查询是在较短的时间内返回所需结果的查询。 –

+1

更好的查询是使用更少的数据库资源返回所需结果并且足够快以满足您的应用程序需求的查询。也就是说,Smruti询问是否最好用子查询或联接来解决给定的问题。这个例子并不是很好(或者甚至是非常必要的),但是问题很明显。 – ObscureRobot

回答

2

哪个更好?

这不是更好的问题,因为它们是完全不同的查询。

如果您的子查询返回多于1行,您的第一个查询将会出错。

4

还有的 “更好” 的几个轴...

  • 更好的性能
  • 更好的可读性
  • 更好的可维护性
  • 更好的灵活性 ....

    所以,

    1. 测试,并找出(检查可以相同也可以计划)
    2. 在旁观者的眼中,这里的查询是等同放着清单,我更喜欢加入
    3. 取决于你的员工
    4. 似乎并不适用于这种情况 ...

更好的是经常只是一个权衡...

+0

+1最后一句“更好是折衷”。 – Emerald214