サポート » 使い方全般 » wp_termsのインデックスの理由

  • wp_termsテーブルですが、なぜslugとnameにインデックスが貼ってあるのだと思いますか?

    nameは重複したものがあるかもしれませんが、それにインデックスを貼ってなんの効果があるでしょうか?

    しかもslugに至っては重複しえないのにインデックスを貼ってある理由がまったくわかりません。

    予想や主観的なご意見で構いませんので、どなたか何かご存じないでしょうか。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • こんにちは

    インデックスがどのように使われているかは、ご自身で WordPress で発行されている SQL を確認されたら良いと思います。
    発行されている SQL の確認方法は以下にあります。
    WordPressでのデバッグ SAVEQUERIES

    また、重複値が無いカラムにインデックスが必要無いとお考えなのであれば、カラムに対するインデックスの必要性を質問される前にインデックス自体について勉強される必要があると思います。
    以下は MySQL のリファレンスですが、参考書などいろいろ出ていると思います。
    https://dev.mysql.com/doc/refman/5.6/ja/optimization-indexes.html

    トピック投稿者 creampink

    (@creampink)

    ご回答どうもありがとうございます。

    いくつかの記事を拝読しているのですが

    重複値が無いカラムにインデックスが必要無い

    について、そうとは限らないというご主張がどうしても理解できません。

    たとえばこの図(https://imgur.com/1HqVPXf)では、IDX_TITLEというインデックスが作成され、以下4つのグループに分かれています。

    ・Assitant Engineer
    ・Engineer
    ・Senior Engineer
    ・Staff

    ここから図の例のように00040010を探すならばフルスキャンよりも早くなるだろうというのは理解できます。

    しかし早くなる理由は、この4つが重複値であるからだとしか考えられないのです。

    だからこそグループにわけられ、グループからスキャンするからこそフルスキャンより早いのだろう、という考えです。

    仮に重複値がなく、レコードIDTITLEが全て一対一であった場合はどうでしょうか。

    同じように00040010を探すならば、IDX_TITLEも10件ですし、フルスキャンも10件ですから、IDX_TITLEが早くなる理由がわかりません。

    つまり

    重複値が無いカラムにインデックスが必要無い

    ということになるのだと結論してしまいます。

    これについて何が間違っているのか教えて頂けませんでしょうか。

    重複値が無いカラムにインデックスが必要無い

    のであれば、プライマリキーに指定して生成されるインデックスなどは不要なのに RDBMS が勝手に余計なものをつけているということになりますね。
    ユニークインデックス制約などはもう、その言葉自体が自己矛盾になってしまいます。

    グループにわけられ、グループからスキャンするからこそフルスキャンより早い

    というのは誤った理解です。
    そのような情報はどこに書いてあったのですか?
    インデックスがなぜ早いかなどという RDBMS のほとんどで共通の機能については検索すればいくらでも見つけることができます。
    繰り返しになりますがインデックスについて勉強してみることをおすすめします。

    また、ここは WordPress のフォーラムですので、データベース自体の機能についてはそのような話題を扱っているところでご質問いただけますでしょうか。

    トピック投稿者 creampink

    (@creampink)

    たしかにWordPressと関係のない話に逸れてしまいました。失礼致しました。ご回答どうもありがとうございました。

    トピック投稿者 creampink

    (@creampink)

    わかりました。先ほどの図のIDX_TITLEは、グループに分かれているのではなくて、昇順に並んでいるのですね。

    ✕グループに分かれたものから探すから早い
    〇昇順に並んだものから探すから早い

    でしたか。
    ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「wp_termsのインデックスの理由」には新たに返信することはできません。