2014-06-20 49 views
0

我正在建立一個系統,以CSV格式排序和搜索大量數據 - X,Y,Z,屬性(屬性全部用逗號分隔,我把它們全部放在那一列中緩解)SQL效率。我應該如何設置我的數據庫?

我有這種格式的數據約2GB,我需要建立一個系統,用戶可以指定和X,Y座標,並找到該座標或設置範圍內的所有點。這需要儘可能快。

我可以很容易地實現這種老式的方式,並把它放在一張桌子上。我需要關於效率的建議。

我現在的想法是:

1)把它分解成多個網格(100米×100米),並在表中,即X一格鍵:670.123和Y:540.009將成爲grid_ID 670.540,我可以選擇使用它。我認爲這會比較慢,因爲我仍然需要在一張巨大的桌子上進行選擇。

2)根據網格系統(100m x 100m)將其分成多個表格,以限制每個表格中的數據。這是我現在正在傾斜的地方。

如果任何人都有自己的想法,這將是比這更好的,請讓我知道:)

注:可能不相關,但連接到SQL服務器的應用程序將在VB.NET編寫。另外,我不確定使用SQL - 如果有更好的方法我寧願使用它。

編輯:@ juergen-d - 這個系統非常像字典。 X和Y是關鍵字,屬性列是值。我可以拆分列,但某些數據源可能有10個屬性,而其他數據源可能有1個屬性。它更容易在一列中。

@ user2864740,zerkms - 有幾百萬行,我可能需要做距離比較。這是大量的數據。我正在尋找3-4秒的最大搜索時間。我需要以某種方式限制數據

@zerkms - 空間索引!謝謝!

+0

永遠,永遠,永遠多值存儲在一列!將每個信息放在一個單獨的列中。這也使得它非常快速。 –

+0

我會*避免*每個網格表。在表格模式中編碼信息,並對這種困難進行查詢 - yech!加快查詢的方法是*適當使用索引*;這也意味着數據必須被正確地標準化或者以其他方式對某些列/數據集合進行測試。 – user2864740

+1

只需2個單詞:空間索引 – zerkms

回答

3

如果應用適當的索引,可以超快地搜索兩個數據集。我會將所有數據放在一個表中,並在x和y上創建兩個輔助非聚集索引。

+0

取決於x和y的範圍,您甚至可以將它們映射到單個索引。 –

相關問題