代码之家  ›  专栏  ›  技术社区  ›  Keng

SQL查询理论问题

  •  5
  • Keng  · 技术社区  · 15 年前

    一行一列 . 有一行的表包含一个日期(最后处理日期),用于提取事务表中的数据(“处理日期”)。

    问题:我应该将“process\u date”表内部联接到事务表还是将事务表内部联接到“process\u date”表?

    5 回复  |  直到 15 年前
        1
  •  6
  •   SQLMenace    15 年前

    我会这样做的

    SELECT <<list only columns you need>> 
    FROM large_historical_transaction_table t
    WHERE EXISTS (SELECT 1 FROM OneRowTable o 
                  WHERE o.last_processing_date = t.process_date)
    
        2
  •  3
  •   Charles Bretana    15 年前

    内部连接是一种对称的双向关系,一般来说并不重要,但在这种情况下,我建议不要连接,将阈值日期读入一个变量,并将其作为参数传递给另一个select查询。。。

        3
  •  2
  •   Raj    15 年前

        4
  •  2
  •   mdma    15 年前

    当连接表时,查询优化器会快速嗅探两者,以确定最合适的连接实现。从逻辑上讲,内部连接是对称的,但是实现可能会倾向于一侧而不是另一侧,以提高性能。

    推荐文章