【问题标题】:Which MySQL indices take longer to be updated?哪些 MySQL 索引需要更长时间才能更新?
【发布时间】:2013-01-03 16:53:33
【问题描述】:

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

这是一般规则吗?

【问题讨论】:

  • @Quassnoi 有previously answered 的一个类似问题的详细信息,并得出结论“您的问题的答案是:不,列基数不会影响索引写入性能 "。

标签: mysql optimization indexing cardinality


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多