6-5 インデックス以外のチューニング手段
パーティション
テーブルにある列をキーとして、データの物理配置をキーごとにまとめる機能
パーティションキーをWHERE条件に指定することで、読み込みデータ量が減る
パーティションの種類
レンジパーティション
値の範囲に応じてデータをパーティションに分割する
分割例は売上げ月や年度
時系列の属性をキーにする場合に有効
リストパーティション
値の範囲に応じてデータをパーティションに分割する
離散的な値に対して有効
値が連続でないときも設定可能
ハッシュパーティション
キーとなる列の値に従ってデータを分散配置する
顧客番号や口座IDのようにカーディナリティーが高いキーに有効
パーティションの注意
WHERE句でパーティションキーを検索条件に指定しないと意味がない
テーブルの全データを読み込むことになってしまう
パーティションに大きな偏りがないか
特定のパーティションにデータが集中していると、そのパーティションへのアクセス時のみクエリが遅延する
パーティションは均一にデータを振り分ける
複数のパーティションを組み合わせることもできる
コンポジット・パーティションと呼ぶ
ただし、2024年時点ではOracle, PostresSQL, MySQLしか使えないので、互換性には注意を払う
パーティション数の上限がある
DBMS毎に上限が決まっているので、パーティションキーのカーディナリティが高いときは注意
ヒント句
強制的に実行計画を変える機能
ヒント区では、使うインデックスを変えたり、結合のアルゴリズムを指定することができる
アプリケーションに変更を加えずにパフォーマンス改善ができるため、使いこなせるとチューニングのファーストチョイスになることもある
一方で、データ量が増えたときにDBMSが動的に実行計画を変えられなくなるのはデメリット