skillup

技術ブログ

Database

オプティマイザと実行計画

投稿日:2016年7月28日 更新日:

データベースがSQLを受け取って処理を実行する前には下記のような段階があります。

パーサー

SQL構文のチェックします。これは一般的なプログラムのチェックと同様かと思います。

オプティマイザ

最適なSQL情報を計画します。同じSQLを実行する場合でも複数の経路があるため、カタログマネージャーを参照し、どの経路が最適化を選択します。

カタログマネージャー

統計情報の照会をします。

統計情報というのは具体的には下記のような情報です。

  • 各テーブルのレコード数
  • 各テーブルの列数と列のサイズ
  • 列値のカーディナリティ(値の個数)
  • 列値のデータ分布(どの値がいくつあるかのヒストグラム)
  • 列内のNULLの数
  • インデックス情報

これらによって最適な経路というのは違ってくるため、これらの情報をオプティマイザに伝えます。

大きいデータがあった時にはこの統計情報を更新する必要があるようですね・・・知らなかった・・

ただ、実際には更新せずに「凍結」という状態にすることもあるようです。

参考リンク

【SQL入門】クエリ(sql)実行後、DBMSでなにが行われているのか
Bアタマアカデミー 第4回 クエリ評価エンジンと実行計画―“シェフおまかせ”はいつも美味しいのか(1)

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

JavaでのSQLの書き方

ちょっと小ネタです。 通常SQLを記述する場合、縦に分けて書くのが見た目にも見やすく、保守性も高いです。 例として

と書くよりは、 [ …

no image

論理設計のアンチパターン その2

今回は論理設計のアンチパターンの続きです。 今までに比べると何も意図がないというものではなく、パフォーマンスを考えて設計されているようなものが多いです。 ただし、中には絶対に許されないタイプのものもあ …

no image

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

no image

herokuでMySQL

昨日に続き、heroku+MySQLのメモです。 herokuはディフォルトではPostgreSQLですが、アドオンを使うとMySQLも使えるようになります。 使い方ですが、herokuの管理画面でク …

no image

正規化のデメリット

Contents1 正規化のデメリット2 本日のSQL 正規化のデメリット 正規化についていろいろ書いてきましたが、メリットもあればデメリットもあります。 メリットとしては データの不整合が起きにくい …

アーカイブ