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

在联接表上使用MAX的SQL性能

  •  1
  • Raj  · 技术社区  · 11 年前

    我正在使用SQL Server 2008R2

    我希望您对以下两个SQL语句的性能和最佳实践的看法。

    select 
    * 
    from BcpSample1 
    where dataloadid = (select MAX(id) from LoadControl_BcpSample1 where Status = 'completed') 
    

     select 
     a.* 
     from CiaBcpSample1 a
     inner join (select ActiveDataLoadId = MAX(id) from LoadControl_BcpSample1 where Status = 'completed') as t
     on a.DataLoadId = t.ActiveDataLoadId
    

    我在SQLServerStudio中尝试了查询计划,但在运行两次后,两者都返回显示相同的查询计划。

    谢谢

    1 回复  |  直到 11 年前
        1
  •  0
  •   Tony    11 年前

    在“关于绩效和最佳实践”方面,这取决于许多方面。一次做得好的,下一次可能不是最好的。你必须测试、衡量性能,然后选择。

    您可以说SQL Server生成的计划是相同的,因此在本例中应该没有任何区别。选择最容易维护的查询,然后转到下一个问题。