gpt4 book ai didi

sql-server - 为什么在填充表后为其建立索引时 SQL Server 会运行得更快?

转载 作者:行者123 更新时间:2023-12-02 21:40:39 27 4
gpt4 key购买 nike

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

这对我来说似乎有点不对劲,但我对幕后发生的事情并没有最坚定的理解。有人对此有答案吗?

最佳答案

如果创建聚集索引,它会影响数据在磁盘上的物理排序方式。最好在事后添加索引,并让数据库引擎在知道数据如何分布时重新排序行。

例如,假设您需要用编号的砖 block build 一堵砖墙,以便编号最高的砖 block 位于墙的底部。如果你只是按照随机顺序递给你砖 block ,一次一 block ,这将是一项艰巨的任务 - 你不知道哪些砖 block 将成为编号最高的,并且你必须将墙拆掉并一遍又一遍地重建它。如果您将所有的积木都排在您面前,并且可以组织您的工作,那么处理该任务就会容易得多。

这就是数据库引擎的情况 - 如果您让它了解整个作业,它会比您一次只向它提供一行要高效得多。

关于sql-server - 为什么在填充表后为其建立索引时 SQL Server 会运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28877/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com