如何从2个不同的分片按字母顺序返回数据?



在SQL Server中,从2个不同的分片上的同一表中按字母顺序检索数据的正确方法是什么?

现在在我正在工作的数据库上有一个表存在于2个不同的分片上。我需要能够选择数据从每个表按字母顺序在批5。例如。

在Shard1中,我们有一个包含6项数据的表

A,
A,
A,
A,
A,
A

在Shard2中,我们有一个包含4项数据的表

A2,
B2,
C2,
D2,

第一次运行查询时,我需要返回

A,
A,
A,
A,
A

当我下次运行它时,它应该返回

A,
A2,
B2,
C2,
D2

我一直在看文档,但不清楚该怎么做。原因是这似乎是不可能的,因为必须有某种中间组件,它必须在单独的数据库中跟踪每个表的字母顺序。我知道在一个数据库中的一个表上按字母顺序执行操作很容易,但是跨数据库和表执行操作似乎不可能。什么是正确的方法来做到这一点与sql服务器?或者这是可能的?

我不太清楚你在问什么,因为分片不是SQL Server的具体功能。

也就是说,让我们假设您有两个独立的SQL Server实例,具有相同的表,并且您在它们之间设置了一个链接服务器。您可以在子查询中使用UNIONUNION ALL组合这两组数据(取决于您是否想要分别在数据集中删除或保留重复项),然后按字母顺序排列它们,如下所示:

SELECT TOP 5 -- Top 5 alphabetically 
ItemId
FROM
(
SELECT ItemId
FROM dbo.Items -- Local instance's copy of the table
UNION -- Removing duplicates (as per your example)
SELECT ItemId
FROM LinkedServerName.DatabaseName.dbo.Items -- Remote instance's copy of the table
) AS Items
ORDER BY ItemId

最新更新