MySQLテーブルにエントリが追加されると、どのインデックスの更新に時間がかかるのか疑問に思いました。カーディナリティが高いインデックスまたはカーディナリティが低いインデックス。
原則ですか?
MySQLテーブルにエントリが追加されると、どのインデックスの更新に時間がかかるのか疑問に思いました。カーディナリティが高いインデックスまたはカーディナリティが低いインデックス。
原則ですか?
どちらのタイプのテーブルも、通常、同じ量の変更があります。N行を変更する場合は、Nキーを更新する必要があります。
UNIQUE
ただし、カーディナリティが高いと固有の値が多く(制約のあるキーなど)、カーディナリティが低いと固有の値がほとんどありません。
いくつかの値は多くの値よりも少ないスペースを占めるため、インデックスの大部分(おそらくすべて)がキャッシュ/バッファーに収まります。したがって、更新と読み取りの両方がディスクにアクセスするのではなくRAMから提供されるため、より高速になります。
一方、カーディナリティが低い場合、インデックスはそれほど有用ではありません。結局のところ、インデックスで行をすばやく検索する必要があります。理想的には、ツリーまたはハッシュ構造への1〜5のプローブは、正確に1行(数百万/十億行のうち)を返します。または、ある範囲に対応する行のサブセット。
行の検索に使用するインデックスが毎回10,000行のセットを返す場合、これは通常あまり役に立ちません(もちろん、例外もあります)。