代码之家  ›  专栏  ›  技术社区  ›  Narendra Jangir

sql查询的未知执行时间行为

  •  1
  • Narendra Jangir  · 技术社区  · 10 年前

    案例1:

    SELECT Column1, 
           Cloumn2, 
           Cloumn3 
      FROM TableName
     WHERE Column3 In (SELECT COL3 
                         FROM #TempTable)
    

    案例2:

    DECLARE @valueClo3 varchar(50)
        set @valueClo3   = 'AnyValue'
    SELECT Column1, 
           Cloumn2, 
           Cloumn3 
      FROM TableName
     WHERE Column3 In (@valueClo3)
    

    案例1耗时太长(约3分钟),而案例2仅需10秒。 #TempTable 只有一个值 'AnyValue'

    1 回复  |  直到 10 年前
        1
  •  1
  •   SQLDoug    10 年前

    子查询比任何其他选择花费的时间都长。话虽如此,IN将更快,但仍起“或”的作用。

    我建议尝试加入您的临时表。根据您的示例,内部联接可能会实现您的目标。