我需要在sql server中的表上创建索引以优化特定的SP。如果我在SP中创建索引,执行我的任务并最终删除索引以便其他SP不受我的索引影响,那可以吗?它会扰乱这种技术的均衡或任何缺点吗?该表包含300万行。
答案 0 :(得分:1)
您将删除/重新添加数据导入的索引。这将是真正"真实"和"生活"表
否则,索引有点意味着(恕我直言)被创建并保持独立。
如果您只处理数据,请考虑"尝试使用" .... #tempTable索引。
IF OBJECT_ID('tempdb..#Holder') IS NOT NULL
begin
drop table #Holder
end
CREATE TABLE #Holder
(ID INT )
/* simulate your insert */
INSERT INTO #HOLDER (ID)
select 1 union all select 2 union all select 3 union all select 4
/* CREATE CLUSTERED INDEX IDX_TempHolder_ID ON #Holder (ID) */
CREATE INDEX IDX_TempHolder_ID ON #Holder (ID)
IF OBJECT_ID('tempdb..#Holder') IS NOT NULL
begin
drop table #Holder
end
答案 1 :(得分:0)
我不推荐它。
在你的测试环境中,我会创建索引并查看它减慢插入速度。如果没有明显的影响(或可接受的效果),那么我只需创建索引并保留它。
在BrentOzar.com上查看他们的sp_BlitzIndex存储过程并进行一些诊断时,这可能是值得的。