WordPressで実行されているSQLクエリを調べる方法

WordPressで実行されているSQLクエリを調べる方法
先生

WordPress のページを表示するときに、データベースにどんな SQL クエリが実行されているのか調べる方法を紹介しよう。

生徒

なるほど、よろしくお願いします。

SAVEQUERIES を有効にして調べる方法

WordPress の設定ファイル wp-config.php に、次の設定を追加します。

define( 'SAVEQUERIES', true );

SQL クエリを表示したい個所に次のコードを記述します。(今回は、テーマのフッターファイルfooter.php に記述して試しました。)

<?php
// 管理者権限の場合のみ対象とする
if ( current_user_can( 'administrator' ) ) {
    global $wpdb;
    echo "<pre>";
    // SQL クエリを表示
    print_r( $wpdb->queries );
    echo "</pre>";
}
?>

サイトのいずれかのページを表示すると、次のようにコードを記述したフッター部分にざーっとクエリ情報が出力されるようになります。

SQLクエリ

ここに出力される情報は、ページ表示時に実行された全ての SQL クエリの配列データになっており、SQL実行時間実行されたコード位置など、詳しい情報が調べられるようになっています。

この設定を有効にすると Web サイトの処理速度に影響が出るため、問題を調査したい時だけ利用するなど、使い方にはご注意ください。

なお、SQL クエリ情報をページに表示するだけではなく、それをログとして保存しておくと、後から調べたいときに便利かもしれません。

ログファイルに保存する方法は、下記の記事を参考にしてください。

先生

複雑な機能を開発していると、データベースの SQL 実行速度が気になってくるものじゃ。

プラグインを入れて調べる

Query Monitor や Debug Bar のような、デバッグ情報を詳しく確認することができるプラグインを入れる方法もあります。

例えば、Query Monitor を入れてページを表示すると、次のようなツールバーから実行された SQL クエリを確認できるようになります。

Query Monitorでデバッグ
Query Monitor で SQL クエリを確認している様子
先生

プラグインの方がこうした見やすい画面で確認できるし、その他のデバッグ情報も合わせて見られるのは大きなメリットじゃな。

まとめ

先生

独自の機能を開発していたり、データの多いサイトを扱っていると、データベースの処理速度が気になってくるケースはよくあるものじゃ。実行された SQL クエリを見る方法を知っておいて損はないぞ。

生徒

困った時は、またこのページを見にきますね〜。

参考URL