【发布时间】:2012-03-11 18:35:12
【问题描述】:
我有一个很大的表,其中包含大约 2000 万行。我必须根据一些过滤条件从这个表中获取大约 400 万行。 过滤条件中的所有列都被一些索引覆盖,并且表统计信息是最新的。
有人建议我不要一次性加载所有行,而是使用批量大小,例如一次说 80000 行,与一次加载所有行相比,这将更快。
你能建议这个想法是否有意义吗?
如果有意义的话,一次加载的最佳行大小是多少。
【问题讨论】:
-
你想对选中的行做什么?
-
我必须在内存中加载这些 db 行并在内存缓存中维护一些东西
-
如果可以的话,他可以拉一系列 PK。
-
对....我在每批中都拉了一系列PK。
-
很公平。在这种情况下,我最好的建议是做一些基准测试。有太多因素会影响最佳批量大小——例如网络速度(如果将行从数据库中拉出以在数据库之外进行处理)、运行数据库的机器上的硬件、所有繁琐的 Dark Magic 数据库配置设置等——每批有一个“明显”的最佳行数。
标签: sql database query-optimization sybase