分析アプリケーションのサポート(DWH向け)

  • MERGEコマンド(条件に一致する行が他表にあったらUPDATE、一致しない行があればINSERT)
    • WHEN MATCHED THEN 〜 UPDATE+DELETE
    • WHEN NOT MATCHED THEN 〜 INSERT
    • UPDATE句にオプションでDELETE句を使用できる→ON句で一致したもののみ削除できる
    • UPDATE句とINSERT句に条件文(WHERE句)を追加できる
    • WHEN MATCHED THEN句またはWHEN NOT MATCHED THEN句のどちらか一方のみでもOK
  • パーティション化された外部結合
    • 集計などで稠密(緻密、連続性のある)データが良い場合に使用したりする
    • ポイントは、PARTITION BY句の位置
    • SELECT ... FROM 元表 PARTITION BY (カラム名) RIGHT OUTER JOIN くっつける表
    • SELECT ... FROM 元表 LEFT OUTER JOIN くっつける表 PARTITION BY (カラム名)
  • MODEL句(行間計算)
    • EXCELの予測計算機能みたいな感じ?
    • デフォルトでは元のレコードとMODEL句で作成されたデータの両方が表示される
    • RETURN UPDATE ROWSをつけると、追加されたデータのみ表示されるようになる
    • 生成された複数の予測データを使って更に演算することも可能
      • その場合、演算順序に注意(使用するデータが先に計算されるように順番に記述)
      • または AUTOMATIC ORDER句を使用して、Oracleに計算順序を自動的に判別してもらう
  • マテリアライズド・ビュー関連
    • DBMS_ADVISOR.TUNE_MVIEW
      • MVログの分析をし、修正のためのログ作成コマンドを生成
      • 高速リフレッシュができるようなMV定義やMVログ定義、クエリーリライトできるようなMV定義を生成する
    • /*+ REWRITE_OR_ERROR */ヒント(クエリーリライトできないときにエラーにする。開発中に使用すると便利)
    • 自己結合のMVで高速リフレッシュ可能
    • 実行計画に「REWIRTE」が記述されるようになり、クエリーリライトしたのかどうかが明確にわかる
    • PCT(パーティションチェンジトラッキング)リフレッシュがリストパーティションでも可能に(9iではレンジとレンジハッシュのみ)
    • 10gから可能になったパーティションメンテナンス操作(以前はコンテナ表に対して操作が必要だった)
      • TRUNCATE PARTITION
      • DROP PARTITION
      • EXCHANGE PARTITION
      • ADD、SPLIT操作は以前から可能