【问题标题】:Is nested select clause decreases the database performance??嵌套选择子句会降低数据库性能吗?
【发布时间】:2011-11-20 01:44:12
【问题描述】:

我曾经在side select子句中编写select子句以避免加入from子句。但我担心这是一种很好的编码实践,否则会降低数据库性能。下面是包含多个表的查询,但我使用嵌套选择子句编写了它,没有任何连接语句。如果我犯了任何错误或者没关系,请告诉我。此刻,我得到了准确的结果。

SELECT * ,
       (select POrderNo from PurchaseOrderMST POM 
        where POM.POrderID=CET.POrderID)as POrderNo,
       (select SiteName from SiteTRS ST where ST.SiteID=CET.SiteID)as SiteName,
       (select ParticularName from ParticularMST PM where   
        PM.ParticularID=CET.ParticularID)as ParticulerName  
FROM ClaimExpenseTRS CET
WHERE ClaimID=@ClaimID  

【问题讨论】:

标签: sql-server-2008


【解决方案1】:

我会为此使用连接,因为这样做是最佳做法,并且对查询优化器会更好。

但是为了学习,只需尝试使用 join 和 without 执行脚本,看看查询计划和执行时间会发生什么。通常这会立即回答您的问题。

【讨论】:

    【解决方案2】:

    您的解决方案很好。 只要您只为每个“连接”表使用 1 列,并且没有多个匹配行,就可以了。在某些情况下,甚至比加入更好。 (数据库引擎可以随时更改连接的方向,如果您不使用技巧来强制给定方向,这可能会导致性能意外。这称为查询优化,但就您真正了解数据库而言,您应该决定如何运行查询)。

    【讨论】:

      【解决方案3】:

      我认为你确实应该加入。 现在您可以使用 where 和 select 语句创建自己的 JOIN。

      【讨论】:

      • JOIN 不是最佳解决方案。不推荐
      • 那么实现你自己的join语句比build in更好吗?
      • 我希望 Gaurav Shah 是在开玩笑,虽然没有迹象表明他在开玩笑:(
      猜你喜欢
      • 2023-03-22
      • 2014-01-12
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多