我有一个sproc,通过
查询将750K记录放入临时表中作为其第一个动作之一.如果我在填充之前在临时表上创建索引,与填充表之后的索引相比,该项目运行的时间大约是两倍. (索引是单列中的一个整数,索引的表只是两列,每个单个整数.)
这似乎对我来说有点偏差,但是对于发生什么事情我并没有最清楚的了解.有人有这个答案吗?
如果创建聚簇索引,则会影响数据在磁盘上物理上的排序方式.最好在事实之后
添加索引,并让
数据库引擎在知道数据如何分配时对其进行排序.
例如,假设你需要用编号的砖块来建造一个砖墙,这样最高数量的砖头就在墙的底部.如果你只是按照随机的顺序递交砖块,那么这是一个艰巨的任务 – 你不会知道哪些砖块是最高的,你必须将墙壁撕开并重建它一遍又一遍.如果你把所有的砖块排列在你面前,那么这个任务会变得容易得多,可以组织你的工作.
这就是数据库引擎 – 如果你让它知道整个工作,它可以比一次只喂一行更有效率.