Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server-将表传递给函数。。。怎样?这是个好主意吗?_Sql_Sql Server_Stored Procedures_Sql Function - Fatal编程技术网

SQL Server-将表传递给函数。。。怎样?这是个好主意吗?

SQL Server-将表传递给函数。。。怎样?这是个好主意吗?,sql,sql-server,stored-procedures,sql-function,Sql,Sql Server,Stored Procedures,Sql Function,我有一个查询我的一个表的存储过程。对于该表,我希望它添加另一列,其中包含由函数计算的值 该函数是另一个查询,其子查询基于另一个表中的用户数据 现在,由于有很多行要进行计算,我认为函数会对每一行反复查询相同的数据 我想我可能会在存储过程中查询函数所需的数据,并将其保存在临时表中,然后将该表传递给函数,这样函数实际上会查询内存中的小表,而不是查询实际表-这样做会更快,并且不会在实际表上有太多IO 我的问题实际上分为两部分: 我说的有道理吗?这是一个好的解决方案,可以让它更快、更高效吗?或者将表数据传

我有一个查询我的一个表的存储过程。对于该表,我希望它添加另一列,其中包含由函数计算的值

该函数是另一个查询,其子查询基于另一个表中的用户数据

现在,由于有很多行要进行计算,我认为函数会对每一行反复查询相同的数据

我想我可能会在存储过程中查询函数所需的数据,并将其保存在临时表中,然后将该表传递给函数,这样函数实际上会查询内存中的小表,而不是查询实际表-这样做会更快,并且不会在实际表上有太多IO

我的问题实际上分为两部分:

  • 我说的有道理吗?这是一个好的解决方案,可以让它更快、更高效吗?或者将表数据传递给函数的成本很高
  • 如何将表传递给函数
  • 谢谢

    编辑:


    顺便说一句-它是一个标量函数

    您可以在MS SQL Server 2008及更高版本的存储过程或函数中使用表值参数:


    部分取决于功能;它是标量函数还是表函数?如果是表函数,是内联函数还是多值函数?对不起,我想我应该提到它。这是一个标量函数。当你用标准的顺序编码方式思考时,你的问题更有意义,SQL思考通常需要其他方式——我不能从你说的话中看出,但是一个视图,甚至只是一个更好的查询,可以做与函数相同的计算,可能会更好更快。我担心:)。你能把它改写成一个内嵌的TVF或视图吗?这是我首先要开始的地方…简短的回答是,标量(和多值TVF)需要每行执行一次,而内联TVF是基于集合的。