sql - 为什么将用户函数中的数据插入表变量时使用临时表更快?
问题描述
我有一个内联表值函数。我想将该函数的输出插入到表变量中,以便可以将其传递给另一个函数。
DECLARE @PeopleToEmail mb.PeopleToEmailOrPhone;
INSERT INTO
@PeopleToEmail
SELECT
*
FROM
mb.GetOptedInEmails('All')
;
在我的数据集上,这个查询需要 28 秒才能运行。
但是,如果我使用中间临时表,运行时间会下降到大约 9 秒。
SELECT
*
INTO
#OptIns
FROM
mb.GetOptedInEmails('All')
;
DECLARE @PeopleToEmail mb.PeopleToEmailOrPhone;
INSERT INTO
@PeopleToEmail
SELECT
*
FROM
#OptIns
这对我来说毫无意义,意味着我的代码是需要的两倍。谁能帮我
- 了解为什么会这样。
- 考虑另一种在没有中间表的情况下优化查询的方法。
我被困在 SQL Server 2012 上。该功能很长,但您可以在此处查看。
没有临时表
温度表
解决方案
推荐阅读
- android - OkHttp POST 请求设置 withCredentials 为 True?
- elasticsearch - 如何在对 Elasticsearch 的 API 请求中指定租户?
- mysql - 为什么 MySQL 为明确定义的列显示未知列?
- javascript - 三元函数执行比 JS 中的 if 语句更好还是更差
- python - 如何将张量与向量相乘?
- python-3.x - 我不明白为什么我的代码中出现此错误。ValueError: 操作数无法与形状 (24,) (26,) 一起广播
- node.js - 无法修剪 exceljs 单元格值
- android - Kotlin 反射:在 R8 混淆中找不到primaryConstructor
- angular - Amcharts 无法正确缩放
- r - 在其中一列中使用“$-”删除数据框中的所有行