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子句中封装单个查询将是一个特别糟糕的主意。创建索引不是免费的,它实际上可能非常昂贵,比更新本身要贵得多。谢谢你的评论。。。是的,我对索引很陌生。。。