寻求分析处理不规则数据的最佳办法,详情见内,班竹及各位高手务请帮忙
写一个存贮过程在20秒钟内完成对一个包含46000条记录的表的分析和更新,可能性有多大?
英文数据,有两个表,一个存的是不规则的地址(可能有一到三个地址,有的用逗号分开城市、州名和邮政编码,有的用空格分开,有的城市名是一个单词,有的是两个或三个单词,大部分的州名用两位字符的缩写,但有的是用全称,有的地址还不包含州名。)。另一个存的是邮政编码,城市,州名。NRA_Corp 表开始时只有 PAddressFUll字段有值,现在要将不规则的地址解析,分解成地址一,地址二,地址三,城市,州名,邮政编码。解析正确的将其Success字段更新为1,处理时要求查邮政编码表中是否存在对应的邮政编码和城市名,存在才更新。要求用存贮过程来完成
我做了一个存贮过程,使用游标来处理这些地址,处理46000条记录的执行时间大约需要6-8分钟(PIII 733〔。客户说不采用游标,他可以在20秒内完成对这些数据的分析处理。这让我有些无法接受。请各位高手看看有没有更好的办法来完成这个任务。究竟有没有可能在20秒内(使用P4 1.8G, 1G RAM) 完成这个工作?
表结构如下:
CREATE TABLE [dbo].[NRA_CORP] (
[PAddressFull] [varchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[PAddress1] [varchar] (150) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[PAddress2] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[PAddress3] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[PCity] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[PState] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[PZip] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Success] [bit] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[NRA_ZipCode] (
[ZIPCode] [char] (5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[ZIPCodeType] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[City] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[CityType] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[State] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[StateCode] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[AreaCode] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Latitude] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Longitude] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[NRA_CORP] WITH NOCHECK ADD
CONSTRAINT [PK_NRA_CORP] PRIMARY KEY CLUSTERED
(
[PAddressFull]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[NRA_ZipCode] WITH NOCHECK ADD
CONSTRAINT [PK_NRA_ZipCode] PRIMARY KEY CLUSTERED
(
[ZIPCode],
[City]
) ON [PRIMARY]
GO
部分数据见下一回贴