1

我目前有一个用于 GPS 跟踪的大型数据库。每次有新人开始向我发送位置时,我都会创建一个具有唯一名称的新数据库。然后我开始向这个表中添加行。有海拔,经度,纬度等列。

情况是其中一些表可能包含超过 100,000 个位置(行)。我现在在数据库中也有大约 600 个表。搜索所有这些表非常困难,它需要我运行“显示表”查询,然后对每个表运行查询以获取我需要的数据。

问题分解为:我是否应该将所有这些表合并到一个包含超过 1,000,000 行的巨大表中。然后,我将添加一列来分隔不同的用户。这将使运行查询变得更加容易,因为我现在需要一个查询而不是多个。

这会使系统更快还是更慢?您是否需要更多信息才能回答这个问题?

4

3 回答 3

2

1,000,000 行以上的正确索引可能工作正常,但由于行会不断增加,您很快就会等待查询执行。我不认为这真的是一个好主意。您可以做的是,创建这样的表,将所有行插入其中并尝试对其进行一些查询。您将亲眼看到它的表现如何。然后为了确定,生成一些随机数据并增加数百万(达到预期大小)。如果它仍然表现良好,那么你就有了答案。查询速度也很大程度上取决于硬件,因此回答此类问题并不容易。尝试做一些测试。

于 2012-05-21T10:59:04.780 回答
0

为什么没有包含 location_id、高度、经度和纬度的表格。有一个结合高度、经度和纬度的唯一键。

有另一个表,可能是 user_location,带有 user_id 和 location_id。location_id 这里是上表的外键。

由于 user_id 和 location_id 是它们各自表中的主键,这意味着自动索引,那么它应该没有问题。

此外,位置表会在一段时间内饱和。

于 2012-05-21T11:01:58.040 回答
0

如果您打算同时定期搜索所有表,那么几乎肯定值得组合这些表并添加一个用户标识符列。向该表添加索引(对于您经常搜索的列)将大大提高性能。

单个查询几乎总是比跨不同表的多个查询快,尤其是在对结果进行排序时。

于 2012-05-21T10:59:28.393 回答