【问题标题】:Which is better Sub-Query or JOIN in SQl query?SQl 查询中哪个更好的子查询或联接?
【发布时间】:2011-12-16 06:35:21
【问题描述】:

谁能建议在这种情况下哪个更好:

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>

【问题讨论】:

  • 您尝试在这里搜索吗?看起来此线程中的问题与您的问题相同:stackoverflow.com/questions/2577174/sql-join-vs-subquery
  • 更好的查询是返回所需结果的查询。我想在某些情况下这两个查询是可以互换的,但肯定并非总是如此。如果您从给定条件的子查询中返回多行,则子查询版本将失败。
  • 更好的查询是在更短的时间内返回所需结果的查询。
  • 更好的查询是使用更少的数据库资源和足够快的速度来满足您的应用程序要求的查询。也就是说,Smruti 正在询问使用子查询或连接解决给定问题是否更好。这个例子不是很好(甚至没有必要),但问题很清楚。
  • Subqueries vs joins的可能重复

标签: mysql sql sql-server


【解决方案1】:

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

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

    所以,

    1. 测试并找出(检查它们可能相同的计划)
    2. 在旁观者看来,查询是等价的,我更喜欢联接
    3. 取决于您的员工
    4. 在这种情况下似乎不适用 ...

更好往往只是一种权衡......

【讨论】:

    【解决方案2】:

    使用 JOIN。

    Subqueries vs joins

    【讨论】:

      【解决方案3】:

      哪个更好?

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

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

      【讨论】:

        【解决方案4】:
        猜你喜欢
        • 2013-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        相关资源
        最近更新 更多