PARTITION統計をコピーした場合に、ソース テーブルとターゲット テーブルの間で内部パーティション番号の対応関係が食い違っていると、ターゲット テーブルにコピーした統計が、ターゲット テーブルのデータに正確に対応しなくなる可能性があります。SHOW TABLE文から返されるテーブル定義とデータが両方のテーブルで同じ場合でも、そのような可能性があります。
CREATE TABLE…AS…WITH DATA AND STATISTICS文を使用してターゲット テーブルを作成するときに、ターゲット テーブルの内部パーティション番号がソース テーブルと異なる場合は、ソース テーブルからコピーするPARTITION統計は無効です。
CREATE TABLE … AS … WITH DATA AND STATISTICS文で作成したターゲット テーブルと統計のコピー元のソース テーブルが内部パーティション番号のレベルまで同一になるようにする確実な方法はありません。2つのテーブルに対するSHOW TABLE文の出力で定義を比較しただけでは、どちらのテーブルも同じように見える場合でも、両者が同一であるという保証はありません。この点を覚えておくのは重要なことです。
COLLECT STATISTICS … FROM source_tableを使用して統計がコピーされる列に含まれるすべてのデータは、ソース テーブルとターゲット テーブルで同じになる必要があります。
ソース テーブルとターゲット テーブルに不一致がある場合、そのリクエストがアボートしたり、エラーを返したりすることはありません。その代わりに、不一致の性質に応じて、2つの警告のうちどちらか1つが返されます。
警告メッセージ | 説明 |
---|---|
ソース テーブルから統計を取得できない |
ソース テーブルで統計が収集されていても、何かの理由でターゲット テーブルにコピーできない場合に、この警告が返されることがあります。 |
一部の統計だけがターゲット テーブルにコピーされた | ソース テーブルの統計の一部をターゲット テーブルにコピーできませんでした。 データベースは、どの統計がコピーされ、どの統計がコピーされなかったかをユーザーに知らせません。 |
内部パーティション番号が異なる場合、COLLECT STATISTICS … FROM source_table文とCREATE TABLE … AS … WITH DATA AND STATISTICS文の結果は同じになりません。どちらの方法でもデータベースによって同じ統計がコピーされますが、COLLECT STATISTICS … FROM source_tableの場合は、両方のテーブルでデータが同じでも、そのデータの統計が無効である可能性があります。
一般的なルールとして、ソース テーブルからPARTITION統計をコピーする場合は、常にターゲット テーブルでPARTITION統計を再収集するようにしてください。