使用C#字典数据或表sql server数据进行地址标准化?

时间:2015-04-22 17:43:18

标签: c# sql-server dictionary

我正在使用表单(桌面应用程序)和sql server 2005在c#中开发地址标准化应用程序。它的工作原理如下:

我在SQL中的模型:

---------------------|   
Table correctAddress | 
---------------------| 
correctAddressId pk  | 
correctAddress       | 
---------------------| 

-------------------|
Table wrongAddress |
-------------------|
wrongAddressId pk  |
wrongAddress       |
correctAddressId fk|
-------------------|

-------------------------|
Table standardizeAddress |
-------------------------|
standardizeAddressId  pk |
streetName               |
-------------------------|
  

CorrectAddress:70.000条记录
  wrongAddress:900.000条记录
  standardizeAddress:可能是1或1.000.000条记录。

我的查询来获取和更改" streetName" to" correctAddress"是:

SELECT s.standardizeAddressId, s.streetName, c.correctAddress
  FROM correctAddress  c 
       INNER JOIN wrongAddress        w ON c.correctAddressId = w.correctAddressId 
       INNER JOIN standardizeAddress  s ON w.wrongAddress = s.streetName

此查询有效,但当我有{百万或standardizeAddress条记录时,需要花费很多时间(20分钟)。

因此,在寻找最佳解决方案时,我将c#Dictionary视为数据结构。 我的问题是,我是否可以使用c#Dictionary做同样的工作?将所有correctAddresswrongAddress放在c#字典中以获取正确的地址?

效果更好?还是有另一种最佳选择? 我正在用字典思考这样的事情:

Public correctAddress As Dictionary(Of String, String) = New Dictionary(Of String, String)

Public Sub New()
        With directionals
            .Add("Riverside Drive", "Rvrsid Drve")
            .Add("Union Street", "Unon Strt")
            .Add("Grand Avenue", "Grnd Avene")
-- and so on until 900.000 records!
End With

坦克供你评论!

1 个答案:

答案 0 :(得分:0)

尽管很难说你的案例中存在哪些实际瓶颈,但只要阅读帖子,如果你考虑处理内存中的数据,就可以使用 DataSetDataTable的集合)。您也可以在内存中使用SQL查询它们。