1

我想知道,当将条目添加到 MySQL 表时,哪些索引需要更长时间才能更新。那些具有高基数或具有低基数的索引。

是一般规则吗?

4

1 回答 1

1

两种类型的表通常具有相同的更改量。如果更改 N 行,则需要更新 N 个键。

但是,高基数有很多唯一值(例如带有UNIQUE约束的键),而低基数几乎没有唯一值。

很少有值比许多值占用更少的空间,因此索引的较大比例(可能是全部)将适合缓存/缓冲区。因此,更新和读取都将从 RAM 提供,而不是访问磁盘,这意味着它会更快。

另一方面,如果基数很低,则索引实际上并没有那么有用。毕竟,您希望索引能够快速查找行。理想情况下,对树或哈希结构的 1-5 次探测恰好返回一行(在几百万/十亿行中)。或者,对应于某个范围的行子集。
如果您用于查找行的索引每次都返回一组 10,000 行,这通常不是很有用(当然也有例外)。

于 2013-01-03T17:00:01.237 回答