我做了一个测试,看看划分一个索引的大表是否会提高性能。
原表: 20000行。子表: 4x5000行。
主表被分成4个表,所有的表都被索引,在测试中,每个sql查询在一个循环中执行了10000次,以衡量更准确的查询次数。
当我搜索表中的索引列时,我发现原始(20000行)表和新(5,000行)表在性能和查询时间上没有区别。
我在没有索引的情况下尝试了相同的测试,删除了所有表的索引,性能差异很明显,在子表中搜索比在大表中搜索快6倍。但使用索引时,性能是相同的。
那么,您认为将我的表划分为更小的表是浪费时间吗?
注意: 20000大小仅用于测试,我的真实数据将是100M或更大。
发布于 2013-02-05 01:41:01
是的,这是浪费时间。数据库可以轻松地处理数百万行,而20,000行相对较小。正如您所注意到的,索引可以快速查找数据。在大多数情况下,数据的大小不会明显影响查找的速度。如果大小的差异是100倍或1000倍,查询可能会多花几毫秒,但您正在处理的规模不会产生真正的差异。
发布于 2013-02-05 06:23:59
您实际上所做的就是重新定义了Partitioning of Tables。我不会使用您自己的子表方案,而专注于使用分区表将自动意味着在内部使用子表,如果您适当地制定您的SQL,如果不需要的话,子表将自动从操作中排除。
但是,分区的所有管理工作都将在服务器上进行,这样您的客户端代码就可以保持简单,而您仍然只需处理单个表。
https://stackoverflow.com/questions/14691771
复制相似问题