1

MySQLテーブルにエントリが追加されると、どのインデックスの更新に時間がかかるのか疑問に思いました。カーディナリティが高いインデックスまたはカーディナリティが低いインデックス。

原則ですか?

4

1 に答える 1

1

どちらのタイプのテーブルも、通常、同じ量の変更があります。N行を変更する場合は、Nキーを更新する必要があります。

UNIQUEただし、カーディナリティが高いと固有の値が多く(制約のあるキーなど)、カーディナリティが低いと固有の値がほとんどありません。

いくつかの値は多くの値よりも少ないスペースを占めるため、インデックスの大部分(おそらくすべて)がキャッシュ/バッファーに収まります。したがって、更新と読み取りの両方がディスクにアクセスするのではなくRAMから提供されるため、より高速になります。

一方、カーディナリティが低い場合、インデックスはそれほど有用ではありません。結局のところ、インデックスで行をすばやく検索する必要があります。理想的には、ツリーまたはハッシュ構造への1〜5のプローブは、正確に1行(数百万/十億行のうち)を返します。または、ある範囲に対応する行のサブセット。
行の検索に使用するインデックスが毎回10,000行のセットを返す場合、これは通常あまり役に立ちません(もちろん、例外もあります)。

于 2013-01-03T17:00:01.237 に答える