2

次のクエリがスロー クエリ ログに表示され、クエリ時間が 12 ~ 20 秒である理由がわかりません。

UPDATE `wp_postmeta` SET `meta_value` = '35' WHERE `post_id` = 1267 AND `meta_key` = 'views'
UPDATE `wp_postmeta` SET `meta_value` = '32' WHERE `post_id` = 874 AND `meta_key` = 'views'
UPDATE `wp_postmeta` SET `meta_value` = '122' WHERE `post_id` = 18557 AND `meta_key` = 'views'
UPDATE `wp_postmeta` SET `meta_value` = '3078' WHERE `post_id` = 21741 AND `meta_key` = 'views'
UPDATE `wp_postmeta` SET `meta_value` = '2657' WHERE `post_id` = 878 AND `meta_key` = 'views'

それらは私にはかなり正常に見え、テストのために phpMyAdmin でそれらの 1 つを実行するのに 0.0056 秒しかかかりません。
ここのテーブルのサイズwp_postmetaは 77,996 です。

上記のクエリが非常に遅い理由と、それらを改善するためにできることはありますか?

4

2 に答える 2

8

@Sandeepが提案したものよりも使用するのに適したインデックスは次のとおりです。

CREATE INDEX <some index name>
ON wp_postmeta (meta_key, post_id);

このインデックスはすべてのWHERE句をキャプチャし、データベース エンジンが正しい行にすばやく移動できるようにします。

于 2013-02-15T09:14:33.770 に答える
4

列「post_id」にインデックスを作成します。それはあなたの問題を解決します。

データが巨大な場合、インデックスはクエリの最適化において重要な役割を果たします。

于 2013-02-15T09:10:44.580 に答える