統計情報をソースからターゲットにコピーする場合、まずソース テーブル、結合インデックス、またはハッシュ インデックスの統計情報を収集します。ソースの統計情報を収集しない状態で、統計情報をソースからターゲットにコピーしようとすると、エラーが発生します。
- n列のテーブルを作成します。
- テーブルに行を入力します。
- 統計情報を収集するには、次のSQLを使用します: COLLECT STATISTICS <TableName> Column (Cols);
- 複数列についての統計情報を収集するには、列のリストを設定します。
- 名前付きの結合インデックスまたはハッシュ インデックスについての統計情報を収集するには、次のSQLを使用します: COLLECT STATISTICS <TableName> INDEX "IndexName"
- 統計情報を収集した後、統計情報をコピーするには、copyStatsにtrue属性を設定します。次のXMLの例では、テーブルの統計情報をコピーし、selection="included"要素のtable属性で指定したテーブルもコピーしています。
<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属性は、テーブル、ハッシュ インデックス、および結合インデックスに対してのみ有効です。