【发布时间】:2012-02-24 17:49:48
【问题描述】:
我有一个大约 10 亿条记录的 MySQL 表。查询时速度很慢。 所以我把这个表按ID拆分成10个结构相同的子表。
table_1(1-1000000)
table_2(10000001-2000000)
table_3(20000001-3000000)
......
但是分表后如何快速查询数据呢?
当我像这样查询用户:select name from table where name='mark'时,我不知道去哪个表查询,因为我可以得到ID范围。
【问题讨论】:
-
通过检查范围。您是否已经尝试过索引?
-
尝试分区 (dev.mysql.com/doc/refman/5.1/en/partitioning.html),它可以解决所有问题。对于您所做的拆分,您首先需要根据 ID 检查需要查询的表,然后对该表运行查询。顺便说一句,正如“Mitch Wheat”所建议的那样,您是否尝试过对包含 10 亿条记录的原始表进行索引?
-
@Abhay 记录每天都在增加,因此将所有记录存储在一个表中没有帮助。查询问题如下:"select name from table where name='mark'",不知道去哪个表查询,因为我可以得到ID的范围。
-
@mitch-wheat,这个表正在快速增长,所以只添加索引不是一个好的解决方案。
-
@@xiaochong0302:想解释一下为什么不?
标签: mysql large-data