在将统计数据从源复制到目标时,首先会收集在源表上的统计数据、联接索引或哈希索引。如果在尝试将统计数据从源复制到目标之前未收集源上的统计数据,则会出现错误。
- 创建包含 n 列的表。
- 使用行填充该表。
- 使用 SQL 收集统计数据: COLLECT STATISTICS <TableName> Column (Cols);
- 要收集有关多个列的统计数据,请提供一组列。
- 要收集有关一个命名的联接索引或哈希索引的统计数据,请键入 COLLECT STATISTICS <TableName> INDEX "IndexName"。
- 要复制收集到的统计数据,请将 copyStats 属性设置为 true。以下 XML 示例用于复制一个表的统计数据以及该表本身,该操作通过 table 元素的 selection="included" 属性来指定。
<database selection="unselected"> <name>dbName</name> <table selection="included" copyStats="true"> <name>MyTable</name> </table> </database>
如果目标上已经存在该表,则可以通过指定 table 元素的 selection="unselected" 属性来复制统计数据,而不复制该表本身。此规则也适用于哈希索引和联接索引。
如果复制的统计数据包含对象,则在复制前,该对象无需位于目标中。如果目标中已存在该对象,则该对象将在复制过程中被覆盖,同时会将统计数据复制到目标中。
以下 XML 示例用于复制哈希索引的统计数据:
<index selection="unselected" copyStats="true"> <name>Cust_Ord_HI </name> <index_database>MyDB</index_database> <index_type>HASH_INDEX</index_type> </index>
copyStats 属性仅适用于表、哈希索引和联接索引。