我正在与一个表联接以检索值,但是为了联接,我需要做一些逻辑,因为两个表都没有通用的值。因此,逻辑是对两个输入进行前1个运算并从公用表中获取特定值。我打算将逻辑放入标量函数中,然后在连接条件中调用它。
我有一个像这样的简单连接
LEFT JOIN <IndexTable> Tbl1 ON Tbl1.PrimaryKey = MainTbl.PrimaryKey
我打算使用用户定义的标量函数将其更改为类似的内容
LEFT JOIN <IndexTable> Tbl1
ON dbo.fnGetCommonID(Tbl1.PrimaryKey) = dbo.fnGetCommonID(MainTbl.PrimaryKey)
就性能而言,以这种方式使用它是好事,还是有更好的方法呢?
答案 0 :(得分:0)
如果可能,在查询中进行计算,也许使用OUTER APPLY而不是LEFT JOIN:
OUTER APPLY (
SELECT TOP 1 <at least one field, also values from MainTbl may be used>
FROM <the set of data you need>
WHERE <boolean, also values from MainTbl may be used>
ORDER BY <make the top record the one you want>
) AS Tbl1