【发布时间】:2013-07-29 07:28:02
【问题描述】:
我有一个相当大的表,有 3 亿条记录(表存储大约 13GB)。
我已经将这张表分成了 10 个分区,但是每个分区仍然有将近 3000 万条记录,这使得 select xxx where column1 = "yyy" 非常慢(每个简单的选择几乎 30 秒)。
现在我想通过将哈希索引添加到我用于查询数据的column1 来加快速度,但结果是添加索引非常非常慢。
所以我想知道,是否有可能做到这一点?以及如何加快此操作?
【问题讨论】:
-
但是你不是只需要添加一次索引吗?
-
索引列是可以的,但是你有很多数据,在3000万的记录表上添加索引的操作不可能很快。除非您拥有一流的硬件,尤其是 HDD。
-
为什么是 HASH 而不是 BTREE 索引?
-
@raffian,我认为 Hash 比 btree 快得多。
-
@MrROY 并非在所有情况下; HASH 对于基于键的查找更快,但不适用于基于范围的选择,归结为您选择数据的方式(主要)......请参阅stackoverflow.com/questions/7306316/btree-vs-hashtable
标签: mysql hash data-partitioning