我在SQL SERVER中有一个分区表,在ID上有一个聚集索引,并且该表由period_key分区。该ID在分区内是唯一的,但不是唯一的交叉分区。我需要的是找到所有的唯一ID。最简单的方法就是使用如何从C#中的数据库中排序多个排序的数据集?
select unique ID from tab
但是,这需要在哪些需要放弃很多临时磁盘的数据库DB进行排序,因此需要大量的磁盘IO的。由于系统已经是IO界限了,我正在考虑削减磁盘IO。由于我们可以通过使用簇索引按顺序读取每个分区,假设我们有10个分区,我们可以从每个分区读取一行,然后比较它们,并使用最小ID输出记录,例如从分区X开始,然后读取分区X的下一行。再次比较这10行,输出带有最小ID的记录等。就像外部排序一样。
我没有C#的经验,但知道java。任何人都可以给我一些想法如何在C#中实现它?
c#在这里有什么作用?你想要一个linq-to-sql解决方案?我很难想象一个解决方案多次往返数据库比在sql server本身优化的一个查询更好。或者我错过了你的观点? –
你想消除重复项('从选项卡中选择不同的ID),或者你想只得到这些只有一个发生的ID? –