我正在使用表单(桌面应用程序)和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
做同样的工作?将所有correctAddress
和wrongAddress
放在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
坦克供你评论!