0

我有下面的代码..如果我在更新列上创建一个索引,查询会更快吗?

CREATE NONCLUSTERED INDEX tmp ON #TestTable (  
  jobid,   
  RecordGroup,
  RecordSubGroup,
  OpenDate   
) 

UPDATE #TestTable   
   SET OpenDate = OB.col1  
     , OpenWrap = OB.col2  
     , OpenBalance = OB.col3  
  FROM #TestTable ST  
  JOIN JobRecordOut OB ON OB.JobId = ST.JobId  
                      AND OB.RecordGroup = ST.RecordGroup  
                      AND OB.RecordSubGroup = ST.RecordSubGroup  
                      AND OB.RecordType = 'OB'  

DROP INDEX tmp ON #TestTable
4

1 回答 1

3

这取决于™。

假设优化器确定索引会有所帮助,索引仅用于加快查找记录的速度。拥有索引并不能确保它会被使用。编写时没有指定数据库,没关系版本,以便能够提供更具体的信息。

当索引与正在添加/更改的值相关时,索引会减慢插入/更新操作。这就是为什么需要维护索引的原因——它们可能会变得碎片化,因此如果不是整个重建,它们就需要“碎片整理”。有时完全重新创建索引更具成本效益——这取决于数据和有多少数据。

当涉及到索引时,您必须自己尝试和测试。他们没有“银弹”/神奇的答案。

于 2013-01-07T04:39:47.837 回答