sql-server – 为什么在填写表之后,SQL Server的工作速度会更快?

我有一个sproc,通过查询将750K记录放入临时表中作为其第一个动作之一.如果我在填充之前在临时表上创建索引,与填充表之后的索引相比,该项目运行的时间大约是两倍. (索引是单列中的一个整数,索引的表只是两列,每个单个整数.)

这似乎对我来说有点偏差,但是对于发生什么事情我并没有最清楚的了解.有人有这个答案吗?

解决方法

如果创建聚簇索引,则会影响数据在磁盘上物理上的排序方式.最好在事实之后添加索引,并让数据库引擎在知道数据如何分配时对其进行排序.

例如,假设你需要用编号的砖块来建造一个砖墙,这样最高数量的砖头就在墙的底部.如果你只是按照随机的顺序递交砖块,那么这是一个艰巨的任务 – 你不会知道哪些砖块是最高的,你必须将墙壁撕开并重建它一遍又一遍.如果你把所有的砖块排列在你面前,那么这个任务会变得容易得多,可以组织你的工作.

这就是数据库引擎 – 如果你让它知道整个工作,它可以比一次只喂一行更有效率.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...