微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

解决方法

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

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

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

原文地址:https://www.jb51.cc/mssql/81991.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐