已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。
3天前关闭。
Improve this question
我一开始的想法是用多线程进行批量查询,然后根据最大id和最小id来计算分段进行分区,但遗憾的是,我的table,id不连续……因此,我打算用create_time作为索引进行分段搜索然后按月分组,按数据量排序,将数据量最大的月和数据量最小的月分为一组,将数据量第二大和第二小的月份分为一组,以此类推,每个线程负责一组,使数据量分布均匀,一组约25w。但还是不能满足管理员的需求,他还是让我用id进行分组,他说虽然table id不连续,但是library id是连续的,使用hibernate的自增序列生成的,但是我看了一下表,最大id和最小id相差30多亿,数据只有700万左右,请问有没有更好的解决方案,或者按照我经理的想法怎么办?
我想在更短的时间内完成此查询
1条答案
按热度按时间2ledvvac1#
通过并行化客户端应用程序并向数据库抛出更多查询,您不会获得更高的性能;如果有任何事情会降低性能,因为数据库将有更多的事情要处理,并且当数据库从磁盘读取表时,数据库的I/O将成为瓶颈。
您可以考虑对表进行分区(并将每个分区存储在不同的物理驱动器上),然后可以使用多个查询,其中每个查询从不同的分区返回数据,并且可以实际利用并行I/O。