【问题标题】:Query from Join 2 table subqueries without where or Query from joined table with where is fasster从没有 where 的 Join 2 表子查询中查询或从连接表中查询 where 更快
【发布时间】:2022-01-02 15:15:56
【问题描述】:

假设我有 2 个表 A (ID, col1, col2) 和 B (ID, col1, col2)。

这样写比较好

SELECT * 
FROM
    (SELECT * 
     FROM A 
     WHERE col1 = 1) A 
JOIN 
    (SELECT * 
     FROM B 
     WHERE col2 = 2) B ON A.ID = B.ID

或者更确切地说:

SELECT * 
FROM A 
JOIN B ON A.ID = B.ID 
WHERE A.col1 = 1 
  AND B.col2 = 2

【问题讨论】:

  • 您应该检查解释计划:例如,DBMS 可以优化查询,使第一个和第二个查询(几乎)相同。

标签: sql join


【解决方案1】:

是的。最好使用连接。

使用WHERE 子句连接数据不允许您像LEFT|RIGHT JOIN 那样抓取数据。 WHERE 子句允许您以 INNER JOIN 的方式获取数据。

更多详情请见:Visual representation of SQL Joins

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2021-10-14
    • 2013-02-11
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多