我有一个经常用新条目填充的表。超过 2 天的记录每隔几分钟就会被删除:
DELETE FROM ip_log WHERE timestamp < NOW() - INTERVAL 2 DAY
这是按时间戳的唯一查询,此表上的其他查询在 IP 上,这是 PK(我想知道这个用户是新用户还是最近已经有活动)
timestamp 的索引应该是ASC还是DESC?
我有一个经常用新条目填充的表。超过 2 天的记录每隔几分钟就会被删除:
DELETE FROM ip_log WHERE timestamp < NOW() - INTERVAL 2 DAY
这是按时间戳的唯一查询,此表上的其他查询在 IP 上,这是 PK(我想知道这个用户是新用户还是最近已经有活动)
timestamp 的索引应该是ASC还是DESC?
索引结构向前和向后一样快,因此您的查询不会从反转树的方向中受益。
但特别是对于时间戳,但实际上对于在一个方向上递增的任何键,我会设置它以便新的(更大的)值在最后,所以将它保留在 ASC 顺序。这将减少索引的碎片,因为无论您的键顺序如何,除非有足够低的填充因子来支持无序插入,否则新值将写入末尾。