【发布时间】:2019-11-16 00:42:38
【问题描述】:
SQL Server 2012:我有一个带有用户定义表类型参数的存储过程。
为了创建它的返回行集,存储过程从一个视图中选择连接到 param 表的几个没有索引的列(由于其他原因添加这些列是有问题的)。
是不是更好:
- 将整个视图加载到本地临时表中,然后选择临时表和参数表的连接
- 直接从加入参数表的视图中选择
视图最多可包含约 100 万行。
这两种方式有什么优势吗?还是 SQL Server 在内部以类似的方式实现这两种方法?
【问题讨论】:
-
这是你不做的事情。你猜不到。两种方式都写,并通过检查执行计划来评估性能。如果您无法索引源表(nb: tables - 视图只是一个预先编写的查询)并且它们没有对您的连接有用的索引,那么它可能没有任何区别。但这只是猜测——这是我们不应该做的事情。
标签: sql-server tsql join view temp-tables