【问题标题】:Optimal row size to fetch at a time from a big table一次从大表中获取的最佳行大小
【发布时间】:2012-03-11 18:35:12
【问题描述】:

我有一个很大的表,其中包含大约 2000 万行。我必须根据一些过滤条件从这个表中获取大约 400 万行。 过滤条件中的所有列都被一些索引覆盖,并且表统计信息是最新的。

有人建议我不要一次性加载所有行,而是使用批量大小,例如一次说 80000 行,与一次加载所有行相比,这将更快。

你能建议这个想法是否有意义吗?

如果有意义的话,一次加载的最佳行大小是多少。

【问题讨论】:

  • 你想对选中的行做什么?
  • 我必须在内存中加载这些 db 行并在内存缓存中维护一些东西
  • 如果可以的话,他可以拉一系列 PK。
  • 对....我在每批中都拉了一系列PK。
  • 很公平。在这种情况下,我最好的建议是做一些基准测试。有太多因素会影响最佳批量大小——例如网络速度(如果将行从数据库中拉出以在数据库之外进行处理)、运行数据库的机器上的硬件、所有繁琐的 Dark Magic 数据库配置设置等——每批有一个“明显”的最佳行数。

标签: sql database query-optimization sybase


【解决方案1】:
  1. 它可以比单个 sql 快得多。
  2. 使用 PK 拆分数据。
  3. 批量大小。这取决于行的长度和处理时间。从 10 000 开始。
  4. 如果可能,线程作业。

【讨论】:

    【解决方案2】:

    使用 SSIS 来操作您的数据...它可以满足您的所有需求,例如线程以及负载大小和缓存的优化。

    旋转立方体或查看商业智能数据仓库工具...

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 1970-01-01
      • 2019-01-11
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多