【发布时间】:2013-09-30 10:51:42
【问题描述】:
我有一个包含很多字段的 InnoDB 表,其中一个是 32 字节的唯一哈希(典型的 md5 结果)。
我必须通过该哈希进行大量查询,但我的表开始变大(500.000 条记录),并且此搜索需要很多时间:
SELECT id FROM `table` WHERE `key`='Bj8DzS7RmCG41nLdgOp0kEhNtrfPo3KF'
这花了大约 0.7 秒
我可以创建这个“散列”32 字节 varchar 列的索引,但是这个表增长了很多,如果我必须优化表(重新索引),它需要很多时间来做(大约在我的情况下为 10 分钟),锁定所有其他实时查询。
那么,在必须通过 32 字节 varchar 字段进行搜索的情况下,优化查询的最佳方法是什么?
【问题讨论】:
-
我不明白你为什么要重新索引。问题似乎就在这里,索引该列是唯一合理的答案。
-
因为每次重新索引大约需要 10 分钟!并且每天大约有 10.000 个新行......所以每天重新索引会很好(例如在凌晨 3 点)......但我不想在重新索引时锁定表 10 分钟。
标签: mysql query-optimization innodb