我正在建立一個系統,以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 - 空間索引!謝謝!
永遠,永遠,永遠多值存儲在一列!將每個信息放在一個單獨的列中。這也使得它非常快速。 –
我會*避免*每個網格表。在表格模式中編碼信息,並對這種困難進行查詢 - yech!加快查詢的方法是*適當使用索引*;這也意味着數據必須被正確地標準化或者以其他方式對某些列/數據集合進行測試。 – user2864740
只需2個單詞:空間索引 – zerkms