gpt4 book ai didi

sql - 优化从不同服务器检索超过 10M 条记录的数据

转载 作者:行者123 更新时间:2023-12-02 07:40:40 25 4
gpt4 key购买 nike

SELECT party_code , max(date) AS date    FROM     
server1.table1 WITH (nolock) GROUP BY party_code

UNION
SELECT party_code , max(date) AS date FROM
server2.table1 WITH (nolock) GROUP BY party_code

UNION
SELECT party_code , max(date) AS date FROM
server3.table1 WITH (nolock) GROUP BY party_code

如上所示,我在不同的服务器上有类似的 17 个表,因此我将它们联合起来以获取记录。总数据总计超过36条crores (3.6 亿)这会影响数据库执行时间和检索记录的能力。有人可以帮助我如何优化这个。或者任何其他解决方案。

最佳答案

首先,您需要一个 covering index在你的 table 上。因此,如果您还没有它,请在所有表上创建此索引:

CREATE NONCLUSTERED INDEX IX_Table1_party_code__date 
ON server1.table1 (party_code) INCLUDE (date)

其次,将 UNION 替换为 UNION ALL 运算符。 Union 对数据集进行排序和比较,如果您需要单独保存每个服务器的记录,则不需要这些数据集。

如果这还不够帮助,也许您可​​以查看其他一些选项:

  • 也许您可以先UNION ALL所有记录(在此过程中添加ServerID列),然后执行一个GROUP BY在数据集上(在 party_codeServerID 上),但我无法确定这会更好还是更糟(你必须进行测试)。

  • 尝试使用 indexed views.

  • 将在夜间计算和填充的暂存表?

关于sql - 优化从不同服务器检索超过 10M 条记录的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17807375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com