2013-10-01 42 views
1

我有两个表AgentFareSalesHeader分别有hdrGuidhdrGuid,DocumentNumber作为列。 我必须执行基于文档编号的查询,但是我无法弄清楚以下两个查询中哪一个最适合。SQL语句结构化

SELECT agf.Fare , agf.Tax . agf.Commission 
FROM AgentFare as agf 
    INNER JOIN SalesHeader as h ON agf.hdrGuid = h.hdrGuid AND h.DocumentNumber = 'XYZ' 

OR

SELECT agf.Fare , agf.Tax . agf.Commission 
FROM AgentFare as agf 
    INNER JOIN SalesHeader as h ON agf.hdrGuid = h.hdrGuid 
WHERE h.DocumentNumber = 'XYZ' 

哪两个是比较合适?

回答

1

应该使用“ON”语句来定义应该连接2个表的列。 “WHERE”语句旨在过滤您的结果。

第二个选项更适合使用。

2

第一种方法比较合适,因为与第二种查询相比,它会花费更少的时间。

+0

这就是我所问的。谢谢@KT –

+1

为什么你认为这需要更少的时间? –

+0

在第一种情况下,请参阅您将要加入的两张表格,但是在其他情况下,首先执行加入,然后再放入一个过滤器。因此,第二个查询需要更多时间。这是我想的。 –

1

您可能会发现这是个人偏好的情况。我的偏好是第二个。我很清楚你加入的是什么,你正在过滤什么。如果您更改代码以便用参数替换'XYZ',那么对于我来说,第二种方法更容易。我期望在底部找到“过滤器”。