我想知道,当一个条目被添加到 MySQL 表时,哪些索引需要更长时间才能更新。那些具有高基数或低基数的索引。
这是一般规则吗?
最佳答案
两种类型的表通常具有相同的更改量。如果更改 N 行,则需要更新 N 个键。
但是,高基数具有许多唯一值(例如具有UNIQUE
约束的键),而低基数具有很少的唯一值。
很少有值比许多值占用更少的空间,因此更大比例(大概是全部)的索引将适合缓存/缓冲区。因此,更新和读取都将从 RAM 提供服务,而不是访问磁盘,这意味着速度会更快。
另一方面,如果基数很低,索引就没有多大用处。毕竟,您希望索引能够快速查找行。理想情况下,对树或哈希结构进行 1-5 次探测仅返回一行(大约百万/十亿行)。或者,行的子集,对应于某个范围。
如果您用于查找行的索引每次都返回一组 10,000 行,这通常不是很有用(当然也有异常(exception))。
关于mysql - 哪些 MySQL 索引需要更长时间才能更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14143402/