【发布时间】:2013-03-22 11:40:08
【问题描述】:
好的,问题看起来像这样。我有一组n 数据库行与空列position。我需要使用该集合(来自 3 个单独的列)中的地址数据(不同的组合等 - 没关系)将它们与另一组 m 元素(也来自数据库,其中包含地址数据和需要位置)。
因为这些集合非常大(大约百万条记录,并且操作经常执行),我需要一些非常快速的算法来比较这两个集合并找到我需要的数据。
我试图找到一些东西,但我不知道它是否是任何众所周知的数学问题(也许是图论?)。
[编辑]
结构太大,无法在此处描述。但我会为此做一个例子。
设置 1。
|[ID] | [CITY] | [STREET] | [POSTCODE] | [LOCATION] |
|-----|--------|----------|------------|------------|
| 1 | City1 | Street1 | 00000 | NULL |
| 2 | City2 | Street2 | 11111 | NULL |
| 3 | City3 | Street3 | 22222 | NULL |
设置 2。
|[ID] | [SOME_KIND_OF_ADDRESS] | [LOCATION] |
|-----|-------------------------------------|------------|
| 1 | Street 1 in City 1, 00000 blah blah | SOME_XY1 |
| 2 | Street 2 in City 1, 00001 blah blah | SOME_XY2 |
| 3 | Street 2 in City 2, 11111 blah blah | SOME_XY3 |
| 4 | Street 1 in City 4, 33333 blah blah | SOME_XY4 |
现在对于Set 1 中的每个元素,我想尝试在Set 2 中找到一些东西。在这种情况下,只会匹配 City2, Street2 和 City1, Street1。所以结果将如下所示:
|[ID] | [CITY] | [STREET] | [POSTCODE] | [LOCATION] |
|-----|--------|----------|------------|------------|
| 1 | City1 | Street1 | 00000 | SOME_XY1 |
| 2 | City2 | Street2 | 11111 | SOME_XY3 |
【问题讨论】:
-
请提供您的结构、数据和预期结果的示例
-
1) 为什么结果中没有 SOME_XY1? 2)如果邮政编码总是很常见,那么您可以分组比较它们。这会快 N^2 倍(当您有 N 个不同的邮政编码时)
-
1.我的坏 xD 对不起。 2、以后
postcode可以和some_kind_of_address一起加入,所以又会出现问题。我现在明白了,我的例子有点混乱。我会改正的 -
好的,我进行了编辑,现在一切都应该更清楚了:)
-
要比较地址,您必须解析 Set 2 中的地址
标签: sql database algorithm graph set