SQL效率。我该如何设置我的数据库?

时间:2014-06-20 01:53:45

标签: sql sql-server database database-design

我正在建立一个系统,以CSV格式对大量数据进行排序和搜索 - X,Y,Z,属性(属性都用逗号分隔,我在这一列中都有它们)为了方便)

我有大约2gb这种格式的数据,我需要构建一个系统,用户可以在其中指定X,Y坐标并查找该坐标或设定范围内的所有点。这需要尽可能快。

我可以用老式的方式轻松实现这一目标,并将其全部放在一张桌子上。我需要有关效率的建议。

我目前的想法是:

1)将其分解为多个网格(100米x 100米)并在表格中有一个网格键,即X:670.123和Y:540.009将成为grid_ID 670.540,我可以选择使用它。我认为这会慢一点,因为我仍然需要在一张巨大的桌子上进行SELECT。

2)根据网格系统(100m x 100m)将其分成多个表,以限制每个表中的数据。这就是我目前所处的位置。

如果有人的想法比这更好,请告诉我:)

注意:可能不相关,但连接到SQL服务器的应用程序将使用VB.NET编写。此外,我还没决定使用SQL - 如果有更好的方法我宁愿使用它。

编辑:@ juergen-d - 这个系统非常像字典。 X和Y是键,属性列是值。我可以拆分列,但有些数据源可能有10个属性,而其他数据源可能有1个属性。更容易将它放在一列中。

@ user2864740,zerkms - 有几百万行,我可能需要做距离比较。这是一个庞大的数据量。我正在寻找3-4秒的最长搜索时间。我需要以某种方式限制数据

@zerkms - 空间索引!!谢谢!

2 个答案:

答案 0 :(得分:3)

如果应用适当的索引,可以超快速搜索两个数据。我会将所有数据放在一个表中,并在x和y上创建两个辅助非聚簇索引。

答案 1 :(得分:2)