2

我有一个函数并传递一个整数,例如 99、4 或 3

该函数返回一个不同的整数(如此有效地转换它)

现在我发现这个函数是在一个选择中调用的,所以对于我所有相关表的 300 行导入,调用数字转换函数的总次数是 250k 次!

这让我很害怕——我的问题是在加入我的查询的查找表中这会更好——从而从选择中删除该函数。

4

3 回答 3

3

我会投票支持查找表,因为它可以利用表的索引(如果创建)此外,在针对表运行时,不需要为每一行运行该函数

但是查找表的一个问题是它应该处理所有可能的输入。我们只能使用查找表处理有限的情况。

因此,如果您可以为所有可能的输入创建一个查找表,那么查找表相对于函数具有性能优势

于 2012-08-03T08:55:27.620 回答
2

您能否将函数中的逻辑复制到您的 select 语句中?

例如

SELECT (a.ValueA + a.ValueB) as [ValueC]
FROM SomeTable a
于 2012-08-03T09:22:29.447 回答
2

对于第一种方法,我建议在 select 子句本身中编写查询/逻辑(相关函数的)。您肯定会看到性能提升。我也遇到了 7,000,000 条记录的性能问题。这对我有点帮助。虽然没有。执行次数不会减少,但肯定会提高性能,因为查询比函数快得多

于 2012-08-03T09:23:22.710 回答