SQL Server-将表传递给函数。。。怎样?这是个好主意吗?
我有一个查询我的一个表的存储过程。对于该表,我希望它添加另一列,其中包含由函数计算的值 该函数是另一个查询,其子查询基于另一个表中的用户数据 现在,由于有很多行要进行计算,我认为函数会对每一行反复查询相同的数据 我想我可能会在存储过程中查询函数所需的数据,并将其保存在临时表中,然后将该表传递给函数,这样函数实际上会查询内存中的小表,而不是查询实际表-这样做会更快,并且不会在实际表上有太多IO 我的问题实际上分为两部分:SQL Server-将表传递给函数。。。怎样?这是个好主意吗?,sql,sql-server,stored-procedures,sql-function,Sql,Sql Server,Stored Procedures,Sql Function,我有一个查询我的一个表的存储过程。对于该表,我希望它添加另一列,其中包含由函数计算的值 该函数是另一个查询,其子查询基于另一个表中的用户数据 现在,由于有很多行要进行计算,我认为函数会对每一行反复查询相同的数据 我想我可能会在存储过程中查询函数所需的数据,并将其保存在临时表中,然后将该表传递给函数,这样函数实际上会查询内存中的小表,而不是查询实际表-这样做会更快,并且不会在实际表上有太多IO 我的问题实际上分为两部分: 我说的有道理吗?这是一个好的解决方案,可以让它更快、更高效吗?或者将表数据传
顺便说一句-它是一个标量函数您可以在MS SQL Server 2008及更高版本的存储过程或函数中使用表值参数:
部分取决于功能;它是标量函数还是表函数?如果是表函数,是内联函数还是多值函数?对不起,我想我应该提到它。这是一个标量函数。当你用标准的顺序编码方式思考时,你的问题更有意义,SQL思考通常需要其他方式——我不能从你说的话中看出,但是一个视图,甚至只是一个更好的查询,可以做与函数相同的计算,可能会更好更快。我担心:)。你能把它改写成一个内嵌的TVF或视图吗?这是我首先要开始的地方…简短的回答是,标量(和多值TVF)需要每行执行一次,而内联TVF是基于集合的。