我有一个存储过程,它通过查询将750K记录放入临时表中,这是它的第一个操作。如果在填充之前在临时表上创建索引,则与在填充表后进行索引时相比,该项目的运行时间大约要长两倍。(索引是单列中的整数,被索引的表只有两列,每个列都是一个整数。)
这对我来说似乎有点不足,但是对于幕后的事情,我却没有最坚定的了解。有人对此有答案吗
如果创建聚簇索引,它将影响磁盘上数据的物理排序方式。最好在事实之后添加索引,并让数据库引擎在知道数据的分布方式时对行进行重新排序。
例如,假设您需要用带编号的砖建造一堵砖墙,以便编号最高的砖位于墙的底部。如果您只是一次随机地将砖块递给一个人,那将是一项艰巨的任务-您不知道哪种砖块最终将成为编号最高的砖块,并且您必须将墙拆除并一遍又一遍地重建它。如果您将所有砖块摆在面前,并且可以组织您的工作,那么完成该任务会容易得多。
这就是数据库引擎的方式-如果您让它了解整个作业,则它的效率要比一次只馈送它的效率高得多。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。