2026年5月20日

2026年5月20日

Query Monitorの使い方とWordPressパフォーマンス診断

はじめに

Query MonitorはWordPressの開発・デバッグに欠かせないプラグインです。ページ読み込み時のSQLクエリ・PHPエラー・HTTP API呼び出し・フック実行時間を管理画面のツールバーで即座に確認できます。

症状・原因

  • WordPressページの表示が遅い原因を特定したい
  • どのプラグインが重いSQLクエリを発行しているか調べたい
  • PHPのWarning・Noticeエラーを開発環境で確認したい
  • 特定のフック・フィルターが正しく動いているか確認したい

解決手順

ステップ1:Query Monitorをインストールする

wp plugin install query-monitor --activate

管理者アカウントでログイン時のみツールバーに表示されます。

ステップ2:管理バーでデータを確認する

ページを表示すると管理バーに「Query Monitor」が追加される:

表示内容:
→ クエリ数: 42 queries(SQLクエリ数)
→ 実行時間: 0.342s(ページ生成時間)
→ メモリ: 24.3MB(PHP メモリ使用量)
→ エラー: 2 errors(PHPエラー数)

クリックでパネルを展開:
→「データベースクエリ」タブ
→「PHPエラー」タブ
→「フック & アクション」タブ
→「HTTP API 呼び出し」タブ

ステップ3:重いSQLクエリを特定する

Query Monitor → データベースクエリ:
→「実行時間」列でソート → 遅いクエリを特定
→「コンポーネント」列で原因プラグイン/テーマを特定
→「呼び出し元」列でコードの場所を確認

重いクエリの例:
実行時間: 0.18s
SQL: SELECT * FROM wp_postmeta WHERE post_id IN (1,2,3,...)
コンポーネント: my-plugin/includes/functions.php:42

対処法:

// 遅いクエリの改善例: post_id IN (...) → posts_clauses フィルターで最適化
// または WP_Query のキャッシュを有効化
$query = new WP_Query([
    'post_type'      => 'product',
    'posts_per_page' => 10,
    'cache_results'  => true,   // クエリ結果をキャッシュ
    'update_post_meta_cache' => true,
    'update_post_term_cache' => true,
]);

ステップ4:PHPエラーをデバッグする

Query Monitor → PHPエラー:
→ エラーレベル: Warning / Notice / Deprecated
→ ファイル・行番号が表示される
→ コンポーネント: どのプラグイン/テーマが原因か

wp-config.php でのデバッグ設定:
// wp-config.php — 開発環境でのデバッグ有効化
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);   // wp-content/debug.log に記録
define('WP_DEBUG_DISPLAY', false); // 画面には表示しない(本番環境)
define('SAVEQUERIES', true);    // SQLクエリを記録(QueryMonitor連携)

ステップ5:フック実行時間を確認する

Query Monitor → フック & アクション:
→ 各フック(init, wp_head, wp_footer等)の実行時間
→ 重いコールバックを特定
→「コンポーネント」で原因を絞り込む

HTTP API 呼び出し:
→ 外部APIへのリクエスト一覧
→ 実行時間・レスポンスコードを確認
→ 遅い外部API呼び出しがページ速度の原因になっていないか確認

ステップ6:WP-CLIでクエリを診断する

# Query Monitorの設定を確認
wp option get qm_settings --format=json

# デバッグログを確認
wp log list  # WP CLIログ拡張が必要

# 手動でSQLクエリの実行計画を確認
wp db query "EXPLAIN SELECT * FROM wp_postmeta WHERE post_id = 123"

# インデックスの確認
wp db query "SHOW INDEX FROM wp_postmeta"

# wp_postmetaのレコード数(肥大化チェック)
wp db query "SELECT COUNT(*) FROM wp_postmeta"

注意事項

  • Query Monitorは本番環境での利用は推奨しません。開発・ステージング環境でのみ有効化してください
  • SAVEQUERIES を有効にするとデータベース負荷が増加します
  • 管理者以外のユーザーにはQuery Monitorのパネルは表示されません

まとめ

Query Monitorはインストールするだけで管理バーにクエリ数・実行時間・エラー数が表示されます。重いSQLクエリはコンポーネント列で原因プラグインを特定し、cache_results の活用やインデックス追加で改善できます。

お気軽にご相談ください

お見積りへ お問い合わせへ