明日使えるソースを自分のために2018-09-10PostgreSQLのEXPLAINについてPostgreSQLPostgreSQLで重たいクエリの調査したときのメモ。EXPLAINについてEXPLAINは問い合わせプランを表示するコマンド。最小コストの問い合わせプランを算出する(問い合わせの最適化)。・どの方式でテーブルを検索するか・複数のテーブルがある場合はどの順序や結合方式で検索するかなどを記述したもの。実行してみるEXPLAINと先頭につけることでコストが表示される。トータルコストの値が重要。シーケンシャルI/Oで1ページ読み込みコストを1.0とした場合の相対値として表示。実際の実行時間を表示できる。loops=1)loopsは処理の繰り返し回数。timeは繰り返し全体の時間を表す。scanインデックスを使わず。scanインデックスを使用してスキャン。scanビットマップを使用してスキャン。インデックスを使って検索した結果をビットマップとして保持し、ビットマップ同士でOR演算する方式。Loopネステッドループ結合を行う。外部テーブルを1レコードずつ取り出し、その都度内部テーブルの全レコードとマッチングして結合していく方式。データが小さい場合に向いている。joinソート・マージ結合を行う。事前に両方のテーブルを結合キーでソートし、両方のテーブルを先頭からマッチングしていく方式。テーブルを1回調べればよいので、テーブルの操作回数が減る。データ量が多い場合に向いている。Joinハッシュ結合を行う。事前に内側テーブルのハッシュ表をメモリに読み込み、外側テーブルとハッシュ表を突き合わせて結合。メモリ内のハッシュ表の検索は高速。ソートメモリが十分にある場合に向いている。実行すると、プランナはマージ結合を選択する。実行すると、プランナはネスト化ループ結合を選択する。こちらのスライドで勉強させていただきました。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事ES2015のコードをBabel+Jestでテストするシェルでヒアドキュメントを使うJavascriptのオブジェクト指向についてdb:migrateで巨大なテーブルへadd_column+default値設定をするGrape+Rspec環境でAPIをテストする月別アーカイブはてなブログをはじめよう!comb_8107さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。