2013-01-03 225 views
1

我在想,当一个条目被添加到MySQL表中时,哪些索引需要更长的时间来更新。那些基数高或基数低的指数。哪些MySQL索引需要更长的时间才能更新?

是一般规则吗?

+1

@Quassnoi已经[先前已经回答](http://stackoverflow.com/a/2599004)一个类似的问题的一些细节,并得出结论“*您的问题的答案是:不,列基数不影响索引写入性能*“。 – eggyal

回答

1

这两种类型的表格通常具有相同数量的更改。如果您更改N行,则需要更新N个密钥。

但是,高基数有许多独特的值(例如约束条件为UNIQUE的关键字),低基数具有很少的唯一值。

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

另一方面,如果基数很低,那么索引并不是那么有用。毕竟,你想要一个索引快速查找行。理想情况下,对树或散列结构的1-5次探测只返回一行(超过几百万行/十亿行)。或者,对应于某个范围的行的子集。
如果您用来查找行的索引每次都会返回一组10,000行,这通常不是非常有用(当然也有例外)。

相关问题