Nir*_*gan 4 sql sql-server stored-procedures nested temp-tables
我正在我的存储过程中创建临时表(#temp_table)。这是一个包含大量数据的巨大表。然后我在存储过程中创建索引,因为它需要更快地查询临时表。但是当我执行存储过程时,没有使用索引。执行存储过程时未创建索引。
CREATE PROC abcdefg
AS
...
SELECT col_a, col_b, col_c....
INTO #temp_table
FROM .....
WHERE ....
...
CREATE INDEX abc_idx ON #temp_table (col_a)
...
SELECT col_a FROM #temp_table WITH (INDEX (abc_idx))
...
GO
Run Code Online (Sandbox Code Playgroud)
当我尝试执行存储过程时,它无法识别索引。我该如何解决这个问题?
通常会发生这种情况,因为临时表的访问计划是在索引存在之前生成的。
幸运的是,您可以使用表级约束来解决这个问题。由于支持 UNIQUE 和 PRIMARY KEY 约束的索引与临时表同时定义,因此优化器将始终能够使用这些索引。
参考:优化临时表的性能/索引
| 归档时间: |
|
| 查看次数: |
23434 次 |
| 最近记录: |