我在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? –