在具有聚簇INDEX或没有聚簇INDEX的表上插入记录

时间:2016-11-21 09:42:02

标签: sql-server tsql indexing

我只想问一下哪种方式在性能方面更好。

我创建了一个具有

的存储过程

选项A

1. DROP TABLE Statement
2. SELECT INTO Statement
3. CREATE CLUSTERED INDEX

注意:基本上存储过程会删除并重新创建表,然后在其上创建一个CLUSTERED INDEX。

我在想,如果这个与我创造的那个相比应该更好。

选项B

1. TRUNCATE TABLE Statement
2. INSERT INTO Statement

注意:使用我的OPTION B将不会创建CLUSTERED INDEX,因为该表已经有一个CLUSTERED INDEX。

感谢所有愿意帮助我的人。

1 个答案:

答案 0 :(得分:0)

插入数据后,通常最好创建索引。

编辑:我似乎被拒绝了,所以我认为我应该对此进行一些限定。请注意"一般" - 这不会永远是真的,有几个人已经建议你只是尝试两个,看看自己哪个更快。

但作为一般经验法则,这是事实。加载大量数据时的标准做法(如果您关注性能,我将其视为给定)是删除或禁用表上的索引,加载数据,然后重建索引。

对于为什么的类比,可以将其想象为为书籍编写索引。如果您以随机顺序编写本书,添加页面并随时更新索引,则必须经常移动索引中的条目以腾出空间。如果你等到写完整本书,那么你可以更有效地编写索引。