TSQL STATS_STREAM(未记录的功能)的格式是什么?它是否包含所有统计数据



我在一台服务器上有一个巨大的表,需要将表复制到生产服务器。我可以这样做,但是我需要生成统计数据,这将在我不想要求处理大量工作的系统上花费很长时间。如果我移动整个数据库,我需要关闭系统以删除现有数据库,这是不行的。

皮纳尔·戴夫(Pinal Dave)有一个帖子,http://blog.sqlauthority.com/2011/01/05/sql-server-copy-statistics-from-one-server-to-another-server/在这篇文章中,他概述了如何使用Microsoft的"生成脚本"将统计信息从一个表复制到一个新表,该脚本允许通过未记录的STATS_STREAM功能进行复制。这是针对新表的。我不确定我是否可以创建一个包含统计信息的表,然后写入所有数据,因为这应该使系统想要更新统计信息 - 即使我关闭了自动生成统计信息。

使用以下代码:(该表是InvTbl,我正在更新的该表上的统计信息是GammaTheta。统计数据存在,数据就在那里。

Update STATISTICS dbo.InvTbl [GammaTheta]  WITH STATS_STREAM = 0x0100002000...

首先,有谁知道Stats_Stream是否包含所有统计数据?那么,重要的是,它是如何存储在二进制中的?

注意:该表存储了两个变量的统计分布,我们根据连接查找这两个变量,并且具有一些关于输入分布的非常重要的特征。它是静态的,加载后我永远不需要重新计算值或统计数据。根据测试,不使用全扫描不是一个选项,因为加入速度很重要并且会受到影响。

注 2:不,数字不以省略号结尾。我把数据关掉了。

如果我理解您的问题,统计信息流是统计数据的二进制表示形式,可用于完全重新创建统计信息,即使在具有不同数据(尽管具有相同架构)的另一个表上也是如此。 凯文·克莱恩(Kevin Kline)在这里写了博客。 我在这里对更好的自动化进行了摇摆。

相关内容

最新更新