5.12.1 アーカイブマルチチャンク表を検索する際のポイント
アーカイブマルチチャンク表を検索する際のポイントを例を使って説明します。
例中で使用するアーカイブマルチチャンク表の定義と,データのアーカイブ状態は次のとおりとします。
- ■アーカイブマルチチャンク表の定義
- ■データのアーカイブ状態
-
-
データベースには,2015年4月〜2016年3月までのデータが格納されています。
-
2015年4月〜12月までのデータは,アーカイブされています。
-
2016年1月〜3月までのデータは,アーカイブされていません。
-
(1) 検索時の基本的な考え方
アーカイブマルチチャンク表を検索する際は,アーカイブレンジ列の日時情報を探索条件に指定して,検索範囲を絞り込むようにしてください。
また,検索対象のデータがアーカイブされているかどうかを意識するようにしてください。アーカイブされているデータを検索する場合,検索処理時間が長くなることがあります。
(2) 探索条件の指定
アーカイブマルチチャンク表を検索する際の,探索条件の指定に関するポイントを次に示します。
-
WHERE句の探索条件にアーカイブレンジ列を指定した条件を必ず指定し,検索範囲を絞り込むようにしてください。
(例)
SELECT * FROM "ARCHIVE-T1" WHERE "RECORD-DAY" BETWEEN DATE'2016/02/01' AND DATE'2016/02/29'
上記の下線部分の指定(アーカイブレンジ列の日時情報を使用した検索範囲の絞り込み)を必ずしてください。
なお,指定できる述語などに制限があります。詳細については,「5.12.2 アーカイブレンジ列の日時情報を使用した検索範囲の絞り込み」を参照してください。
-
AND条件を追加して,検索範囲をさらに絞り込むようにしてください。
(例)
SELECT * FROM "ARCHIVE-T1" WHERE "RECORD-DAY" BETWEEN DATE'2016/02/01' AND DATE'2016/02/29' AND "C1"='P001' AND "C2"=100
-
アーカイブレンジ列に対する比較条件は,定数を指定することを推奨します。
(例)推奨する指定例
WHERE "RECORD-DAY" BETWEEN DATE'2016/01/01' AND DATE'2016/03/31' WHERE "RECORD-DAY" >= DATE'2016/02/01'
(3) アーカイブされていないデータを検索する場合
アーカイブされていないデータを検索する場合(この例では2016年1月以降のデータを検索する場合),探索条件には,アーカイブされていないデータだけを検索範囲とする条件を指定します。
- (例)
-
SELECT * FROM "ARCHIVE-T1" WHERE "RECORD-DAY" >= DATE'2016/01/01' AND "C1"='P001' AND "C2"=100
この例の場合,2016/01/01以降のデータだけを検索範囲とする探索条件を指定しています。
(4) アーカイブされているデータを検索する場合
アーカイブされているデータを検索する場合(この例では2015年4月〜2015年12月のデータを検索する場合),探索条件に指定するアーカイブレンジ列の日時情報の範囲をできる限り狭くしてください。
- (例)
-
SELECT * FROM "ARCHIVE-T1" WHERE "RECORD-DAY" BETWEEN DATE'2015/10/01' AND DATE'2015/10/05' AND "C1"='P001' AND "C2"=100
上記の下線部分の指定によって,検索範囲をできる限り絞り込み,読み込み対象のアーカイブファイルを減らします。読み込み対象のアーカイブファイルが増えると,それに比例して検索時間が長くなります。