MySQL:分割表后测试性能

时间:2013-02-04 17:10:59

标签: mysql sql performance indexing

我做了一个测试,看看划分一个索引的大表是否会提高性能。

原始表:20000行。 子表:4x5000行。

主表分为4个表,所有表都被索引,在测试中每个sql查询在循环中执行10000次以测量更准确的查询次数。

当我搜索表中的索引列时,我发现性能没有区别,原始(20000行)表和新(5000行)表的查询时间相同。

我通过删除所有表的索引来尝试相同的测试而没有索引,并且性能的差异是显而易见的,其中在子表中搜索比在大表中搜索快6倍。但是通过索引,性能是一样的。

所以你认为将我的桌子分成较小的桌子是浪费时间吗?

注意:20000尺寸仅用于测试,我的实际数据大小将为100M或更多。

2 个答案:

答案 0 :(得分:0)

是的,这是浪费时间。数据库可以轻松处理数百万行,而20,000则相对较小。正如您所注意到的,索引可以快速查找数据。在大多数情况下,数据的大小不会显着影响查找的速度。如果大小差异为100或1000倍,则查询可能需要几毫秒,但您正在处理的比例将没有真正的差异。

答案 1 :(得分:0)

您有效完成的工作是重新发明Partitioning of Tables。我不会使用您自己的子表方案,并且专注于使用分区表会自动意味着使用内部子表,如果您适当地制定SQL,如果不需要,子表将自动从操作中排除。

但是,分区的所有管理都在服务器本身上,因此您的客户端代码可以保持简单,您仍然只需要处理单个表。