EXPLAIN

MySQL EXPLAIN

January 1, 2020
MySQL, SQL, EXPLAIN

MySQL EXPLAIN # 前提 # MySQL 5.7 SQLチューニングの手順 # スロークエリ(重いクエリ)を抽出。 スロークエリ・ログに記録。 スロークエリを集計。 実行計画(MySQLが内部的に立てる実行手順)=「MySQLの意思表示」を確認。 EXPLAIN を、SELECT・DELETE・INSERT・REPLACE・UPDATE の先頭につけて実行。(MySQL5.6.3より前は SELECT のみ) チューニング。 SQLの改善。 INDEX(テーブルの索引)の追加。日本語では「インデックスを張(は)る」と言う場合が多い。 テーブル構成の見直し。 スロークエリーログ # 設定の項目 # 設定項目 設定内容 slow_query_log スロークエリーログを出力する際に必要となる設定。デフォルト値は0。 long_query_time スロークエリーログを出力するための閾値(しきいち)の設定。0秒~360024365の範囲で指定。小数点以下の値を指定することでμs単位まで指定が可能。0秒を指定することで発行されたSQLを全部保存することも可能。 log_queries_not_using_indexes インデックスが未使用なクエリに関して記録をする設定。 slow_query_log_file スロークエリーログが出力される先を指定。 設定の方法 # 設定値は、1 が ON、0 が OFF。 最後の slow_query_log_file のsetでエラーが出た場合は,別のディレクトリを指定するか,もしくは指定したファイルを適宜作って書き込み権限を与えること。 MySQLのコンソールから設定 mysql> SET GLOBAL slow_query_log = 1; mysql> SET GLOBAL long_query_time = 5; mysql> SET GLOBAL log_queries_not_using_indexes = 1; mysql> SET GLOBAL slow_query_log_file = '/path/to/mysql/slow_query. ...