MySQl InnoDB では、btree インデックスに含まれる列の数は重要ですか?
例えば:
Key1 contains cols (col1, col2, col3)
または
Key1 contains col1
Key2 contains col2
Key3 contains col3
これは問題ですか?ありがとう!
インデックス on(col1, col2, col3)
は、次の目的で使用できます。
where col1 = 1 and col2 = 2 and col3 = 3
where col1 = 1 and col3 = 3
where col1 = 1
ただし、次の場合は対象外です。
where col2 = 2 and col3 = 3
where col3 = 3
の値を素早く検索するには、 Likeだけでなくcol2
で始まるインデックスが必要です。col2.
(col2)
(col2, col3, col1)
col2
そのため、 を検索したり、col3
から独立して検索したい場合はcol1
、3 つのインデックスがはるかに優れたオプションです。
はい、それは重要です。
インデックスが大きいほど、まあ... 大きくなります。:-) ご存知のように、ディスク容量が増え、読み取り/更新が遅くなります。
実際、サイズが大きすぎると、より小さな代替インデックスでうまくいくと、プランナーによって無視されることがあります。