人を説明する簡単なテーブルがあるとします-人。
このテーブルには3つの列があります。
Person_id, name, surname
このテーブルにインデックスを作成したいと思います。このテーブルに向けられたクエリは、名前(WHERE name = 'sth'
)と名前と姓の両方()に基づいて人を検索することを知っていますWHERE name = 'sth' AND surname = 'sth'
。
そこで、列にインデックスを作成しました(name, surname)
。この場合、列にのみインデックスを追加する必要があります(name)
か?
2つのインデックスは必要ありません。単一の複合インデックスは、インデックスの最初の列である限り、name
とname
/ surname
-の両方の条件を処理name
します。
これは、どのデータベースにも当てはまります。
MySQLには、複数列のインデックスについてかなり良い説明があります。それはあなたがそれらをよりよく理解するのを助けるかもしれません。
これは、インデックスをサポートするほぼすべてのデータベースのデフォルトおよび標準のインデックスであるbツリーインデックスを参照していることに注意してください。必ずしもすべてのインデックスに適用されるわけではありません。たとえば、ハッシュベースのインデックスにはこのプロパティがありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加