Sql server 2008 嵌套的select子句是否会降低数据库性能??

Sql server 2008 嵌套的select子句是否会降低数据库性能??,sql-server-2008,Sql Server 2008,我过去常常在side select子句中编写select子句,以避免加入from子句。但我担心这是一个好的coading实践,还是会降低数据库性能。下面是包含多个表的查询,但我使用嵌套的select子句编写了它,没有任何join语句。请让我知道,如果我犯了任何错误或它是好的。现在,我得到了准确的结果 SELECT * , (select POrderNo from PurchaseOrderMST POM where POM.POrderID=CET.POrder

我过去常常在side select子句中编写select子句,以避免加入from子句。但我担心这是一个好的coading实践,还是会降低数据库性能。下面是包含多个表的查询,但我使用嵌套的select子句编写了它,没有任何join语句。请让我知道,如果我犯了任何错误或它是好的。现在,我得到了准确的结果

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  

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

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

我会使用联接,因为这样做是最佳实践,而且对查询优化器来说会更好


但是对于学习来说,只需尝试执行带有join和不带join的脚本,看看查询计划和执行时间会发生什么。通常这会立即回答您的问题。

我会使用连接来解决这个问题,因为这样做是最佳实践,对查询优化器来说会更好


但是对于学习来说,只需尝试执行带有join和不带join的脚本,看看查询计划和执行时间会发生什么。通常这会立即回答您的问题。

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

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

联接不是最佳解决方案。不推荐这么说,实现您自己的加入声明比内置声明更好?我希望Gaurav Shah是在开玩笑,尽管没有迹象表明他是:(JOIN是非最佳解决方案。不建议这样做,因此实现自己的JOIN语句比内置语句更好?我希望Gaurav Shah是在开玩笑,尽管没有迹象表明他是:(可能重复:可能重复: