データベース - IBM DB2 - 統計情報リセット

クラウディア 
1. 概要
2. 統計情報リセット

1. 概要

 実は、表題は怪しい。  仕事で、データベースを使ってはいるものの、データベースに関しては、素人の域を脱していないので、用語としてごれが正しいのか、はなはだ不安であります。  やりたいのは、こういうこと。  「SQL」を実行するのに、同じテーブルに連続でアクセスすると、データベース側で、キャッシュか何かを使用しているのか、同じ「SQL」の実行時間が1回目よりも2回目以降の方が短くなりますな。  「SQL」の構文自体の速さを比較したりするのには、これは、はなはだ都合が悪い。  なので、「SQL」発行後に、前回発行した状態をクリアするというか、初期化するというか・・・。  これを「統計情報をリセットする」ということかどうか、実はよくわからんのですが、そういうことをしたいのです。

2. 統計情報リセット

 多分、「Oracle」ならば。  「SYSDBA」権限で。

ALTER SYSTEM FLUSH BUFFER_CACHE;
 で、いいんじゃないかな(やってみる環境がないので、確証はありません)?  ところが、「IBM DB2」は、ようわからんのですよ。  「巨人 IBM」さんとこのウェブサイトは、さっぱりわからん構成になっているので、はなはだ要領を得ないのだ。  あれこれやってみたあげく、こうじゃないかな?と思われるのが、下記の構文。  管理者権限で、「clpplus」を起動して、データベースに接続したうえで。

RUNSTATS ON TABLE スキーマ名.テーブル名;
REORG TABLE スキーマ名.テーブル名 INDEX スキーマ名.キー名;
 実は、最初、「RUNSTATS」だけで、前の情報は消えたなと喜んでいたら、「SQL」がいつまでたっても、かえってこなくなったのですよ。  それで、「REORG」することにしました。  そうすることで、「SQL」は一応かえってきますし、当初の目的とすることははたせたように思います。