2017-05-09 5 views

答えて

2

wp_postmetaのための標準スキーマが悪いインデックスを提供します。これにより、パフォーマンス上の問題が発生します。

これにスキーマを変更することにより、メタデータへのほとんどの参照は速くなります。

CREATE TABLE wp_postmeta (
    post_id …, 
    meta_key …, 
    meta_value …, 
    PRIMARY KEY(post_id, meta_key), 
    INDEX(meta_key) 
) ENGINE=InnoDB; 

注:

  • 現在AUTO_INCREMENT列はスペースの無駄です、そしてので、クエリを遅くそれはPRIMARY KEYであり、それによって(post_id, meta_key)の「天然の」「複合」PKを避ける。
  • InnoDBは、「クラスタリング」によってそのPKのパフォーマンスをさらに向上させます。
  • MySQL 5.6(またはMariaDB 10.0または10.1)を使用している場合、meta_keyVARCHAR(255)からVARCHAR(191)に変更してください。 (理由と対処法については、191で十分でない場合は別の質問で議論できます)
  • INDEX(meta_key)は必須ではありませんが、「特定のキーを持つ投稿を検索する」場合は必要です。
  • 警告:これらの変更により、多くのポストメタの使用がスピードアップしますが、全部ではありません。私はと思う。はユースケースを遅くすると思う。 (あなたがそれらが発生した場合、このようなクエリを入力してください。それは、キャッシング問題である可能性があり、実際の劣化をarはない。)

あなたがあなたCREATE TABLEを提示したい場合は、私はこれに変換するALTERを提供することができます。

関連する問題