0

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

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

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

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

我通过删除所有表的索引尝试了相同的测试,没有索引,性能差异很明显,在子表中搜索比在大表中搜索快 6 倍。但是索引的性能是相同的。

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

注意:20000大小只是为了测试,我的真实数据会在100M以上。

4

2 回答 2

0

您实际上所做的是重新发明了Partitioning of Tables。我不会使用您自己的子表方案,而专注于使用分区表将自动意味着使用内部子表,如果您适当地制定 SQL,如果不需要,子表将自动从操作中排除。

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

于 2013-02-04T22:23:58.747 回答
0

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

于 2013-02-04T17:41:00.740 回答