Sql 更新列上的索引

Sql 更新列上的索引,sql,indexing,Sql,Indexing,我有下面的代码。。如果我在更新列上创建索引, 查询速度会更快吗 CREATE NONCLUSTERED INDEX tmp ON #TestTable ( jobid, RecordGroup, RecordSubGroup, OpenDate ) UPDATE #TestTable SET OpenDate = OB.col1 , OpenWrap = OB.col2 , OpenBalance = OB.col3

我有下面的代码。。如果我在更新列上创建索引, 查询速度会更快吗

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
视情况而定™.

假设优化器确定索引有助于查找记录,那么索引只能加快查找记录的速度。拥有索引并不能确保它会被使用。在编写数据库时,未指定任何数据库(无需指定版本),以提供更具体的信息

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

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

视情况而定™.

假设优化器确定索引有助于查找记录,那么索引只能加快查找记录的速度。拥有索引并不能确保它会被使用。在编写数据库时,未指定任何数据库(无需指定版本),以提供更具体的信息

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


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

没有。索引不会使更新/插入操作更快。您似乎不知道索引实际上是什么,或者它们是做什么的,所以在尝试应用它们之前,您可能应该阅读一些关于它们的信息。在create/drop index子句中封装单个查询将是一个特别糟糕的主意。创建索引不是免费的,它实际上可能非常昂贵,比更新本身要贵得多。谢谢你的评论。。。是的,我对索引非常陌生……不。索引不会加快更新/插入操作。您似乎不知道索引实际上是什么,或者它们是做什么的,所以在尝试应用它们之前,您可能应该阅读一些关于它们的信息。在create/drop index子句中封装单个查询将是一个特别糟糕的主意。创建索引不是免费的,它实际上可能非常昂贵,比更新本身要贵得多。谢谢你的评论。。。是的,我对索引很陌生。。。