DBパフォーマンス

【SQL】EXPLAINステートメント

■ はじめに https://dk521123.hatenablog.com/entry/2020/02/22/002139 https://dk521123.hatenablog.com/entry/2020/08/31/171754 で、Redshiftの勉強した際に、パフォーマンスの分析する際に EXPLAINステートメントがでてきた。 以前、やったはずだが、す…

【SQL】SQL の パフォーマンス について

■ 遅いSQL * 遅いSQLは、以下の2種類 【1】 SQL文の1回の実行が遅い 【2】 SQL文の1回の実行は許容範囲だが、その実行文が多数実行されている ■ 遅くなっていく理由 【1】 データ量の変化 1-1) データ数の増加 1ー2) 統計情報が変化せずに、実状…

【SQL】 自己相関サブクエリ でパフォーマンスが悪かった話とその解決策

■ はじめに 自己相関サブクエリ でパフォーマンスが悪かったので その際の解決策などを記録する ■ 現象 * 50万レコードほどのテーブルで相関サブクエリを使った結果、数十分掛かってしまった 動作環境 * OS : CentOS7 * DB : MySQL パフォーマンスが悪かった…

アドホック クエリ(Adhoc query)

■ アドホック クエリ(Adhoc query)とは? * その場限りで使い捨てのクエリをいう * Adhoc : その場かぎりの、その場しのぎに、特別の ■ サンプル -- 例1 SELECT * FROM Person WHERE id = 9; -- 例2 SELECT * FROM Person WHERE id = 5; ■ デメリット アド…

【設計】 パフォーマンスをあげることを考える ~DB設計編~

http://www.slideshare.net/matsunobu/ss-6584540#btnNext より ■ テーブルを日時別に分ける * DB設計からちゃんと考慮しておかないと非常に困る * パーティション機能を使うことも検討 http://blogs.yahoo.co.jp/dk521123/28959371.html ■ 正規化 / 非正規…

【SQL】パフォーマンスの良いSQLを記述 ~検索条件編~

■ WHEREの左辺で算術演算子や関数を使わない * WHERE句の左辺に算術演算や関数を指定すると、インデックスが使われないため 【解決策】 * 以下のサンプルのように、右辺で行うようにする サンプル X SELECT * FROM SampleTable WHERE salary * 1.1 > 250000;…

【SQL】SQL文が実行されるまでの工程

■ はじめに * DBパフォーマンスを行うためには、 まず、どのような工程でSQL文が実行されるかを知ることが重要となってくる 目次 【1】SQL文が実行されるまでの工程 1)SQL文の解析処理(PARSE) 2)SQL文の書き換え 3)実行プランの作成 【3】クエリ・…

【SQL】パフォーマンスをあげることを考える ~チューニング手順~

■ SQLチューニングの手順 http://www.atmarkit.co.jp/fdb/rensai/orasql01/oracle_sql01_04.gif 手順1:問題箇所の確認 ■ 状況確認 * 何の処理を行っているのか * 処理にどのくらい時間がかかっているのか ■ 環境確認 * システム形態 * アプリケーションの種…

【SQL】パフォーマンスの良いSQLを記述 ~全般編~

■ はじめに パフォーマンスの良いSQLを記述する方法を記す。 目次 【1】全般 1)クエリの書き方を統一する 2)ワイルドカード「*」を使用しない 3)表に別名を付ける 4)DISTINCTの使用は、極力避ける 【2】インデックス 【3】相関サブクエリ / 自己…

【DB】インデックス ~ 入門編 ~

■ はじめに DB のインデックスについて、まとめる 目次 【1】インデックス 【2】インデックスの作成 【3】使用上の注意 【1】インデックス * パフォーマンス向上などに使用 http://www.atmarkit.co.jp/fdb/ref/ref_oracle/startup.html 【2】インデック…