开发者社区> 问答> 正文

为什么在填充表后索引表时,SQL Server的工作速度更快?

我有一个存储过程,它通过查询将750K记录放入临时表中,这是它的第一个操作。如果在填充之前在临时表上创建索引,则与在填充表后进行索引时相比,该项目的运行时间大约要长两倍。(索引是单列中的整数,被索引的表只有两列,每个列都是一个整数。)

这对我来说似乎有点不足,但是对于幕后的事情,我却没有最坚定的了解。有人对此有答案吗

展开
收起
心有灵_夕 2019-12-25 20:37:02 1109 0
1 条回答
写回答
取消 提交回答
  • 如果创建聚簇索引,它将影响磁盘上数据的物理排序方式。最好在事实之后添加索引,并让数据库引擎在知道数据的分布方式时对行进行重新排序。

    例如,假设您需要用带编号的砖建造一堵砖墙,以便编号最高的砖位于墙的底部。如果您只是一次随机地将砖块递给一个人,那将是一项艰巨的任务-您不知道哪种砖块最终将成为编号最高的砖块,并且您必须将墙拆除并一遍又一遍地重建它。如果您将所有砖块摆在面前,并且可以组织您的工作,那么完成该任务会容易得多。

    这就是数据库引擎的方式-如果您让它了解整个作业,则它的效率要比一次只馈送它的效率高得多。

    2019-12-25 20:37:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载