【发布时间】:2017-12-21 05:17:11
【问题描述】:
我有一个选择查询,它调用一个函数三次 [当然每次都使用 diff 输入 col]。我注意到执行时间 [多行] 为 8 秒,而当我调用该函数一次时为 3 秒。这是有道理的,因为工作量增加了两倍。
问:
是否可以提示数据库服务器强制多线程,因为它们是 3 个不同的独立列?
我尝试单独提取结果并加入它们。即使在 SQL-Server 或 Oracle 中,它们似乎也没有创建任何类型的并行性。使用下面的 SS 语法。
select top 200 dbo.CALC_DURATION (Col1, Col2 , 'PP', 553, '', 'N', 'H'),
dbo.CALC_DURATION (Col3, Col4 , 'PP', 553, '', 'N', 'H'),
dbo.CALC_DURATION (Col5, Col6 , 'PP', 553, '', 'N', 'H')
from NNMP265_ISS;
【问题讨论】:
-
我怀疑这是可能的,因为 CALC_DURATION 是一个标量函数。见dba.stackexchange.com/questions/134453/…
-
能否包含函数的代码?人们可能会想到如何以不妨碍并行性的其他方式完成它。
-
当然,谢谢。该函数通过对 2 组数据的优先级计算工作时间,然后精确计算开始和结束时间之间的工作时间。在主要问题中附上屏幕截图,因为我不适合这里的程序。
标签: sql sql-server multithreading select oracle11g