SQl 查询中哪个更好的子查询或联接?
Posted
技术标签:
【中文标题】SQl 查询中哪个更好的子查询或联接?【英文标题】:Which is better Sub-Query or JOIN in SQl query? 【发布时间】: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>
【问题讨论】:
您尝试在这里搜索吗?看起来此线程中的问题与您的问题相同:***.com/questions/2577174/sql-join-vs-subquery 更好的查询是返回所需结果的查询。我想在某些情况下这两个查询是可以互换的,但肯定并非总是如此。如果您从给定条件的子查询中返回多行,则子查询版本将失败。 更好的查询是在更短的时间内返回所需结果的查询。 更好的查询是使用更少的数据库资源和足够快的速度来满足您的应用程序要求的查询。也就是说,Smruti 正在询问使用子查询或连接解决给定问题是否更好。这个例子不是很好(甚至没有必要),但问题很清楚。 Subqueries vs joins的可能重复 【参考方案1】:有几个“更好”的轴...
更好的性能 更好的可读性 更好的可维护性更好的灵活性 ....
所以,
-
测试并找出(检查它们可能相同的计划)
在旁观者看来,查询是等价的,我更喜欢联接
取决于您的员工
在这种情况下似乎不适用
...
更好往往只是一种权衡......
【讨论】:
【参考方案2】:使用 JOIN。
Subqueries vs joins
【讨论】:
【参考方案3】:哪个更好?
这不是更好的问题,因为它们是完全不同的查询。
如果您的子查询返回多于 1 行,您的第一个查询将出错。
【讨论】:
【参考方案4】:只需使用分析工具来优化您的查询:
http://www.databasejournal.com/features/mysql/article.php/3925251/Using-MySQLs-Analysis-Tools-to-Improve-Query-Performance.htm
【讨论】:
以上是关于SQl 查询中哪个更好的子查询或联接?的主要内容,如果未能解决你的问题,请参考以下文章
数据库(比如MYSQL) ,表连结查询与子查询哪个效率高些? 为啥