2011-09-19 571 views
0

我用来在side select子句中编写select子句以避免从from子句中加入。但是,我担心这是一个很好的相关练习,否则会降低数据库的性能。下面是包含多个表的查询,但是我用没有任何联接语句的嵌套select子句写了它。请让我知道如果我犯了什么错误或没有问题。此时此刻,我正在得到准确的结果。嵌套select子句是否会降低数据库性能?

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 [email protected] 
+0

可能的重复:http://stackoverflow.com/questions/1067016/join-queries-vs-multiple-queries –

回答

2

我会使用连接,因为这是最好的做法,对查询优化器会更好。

但是,对于学习只是尝试使用连接和不使用脚本来执行脚本,并查看查询计划和执行时间会发生什么。通常这会立即回答你的问题。

0

我想你应该加入的确如此。 现在你创建自己的JOIN与where和select语句。

+0

JOIN是非最佳解决方案。并且不推荐 –

+0

为什么JOIN不是最优的?这会使上述语句更具可读性...... –

+0

因此,实现自己的连接语句比构建内容更好? – Max

1

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

相关问题