I am using the following query to update a 5-millon-row table (Client5M) with

information from a table indexed by zip. In both cases there is a clustered index

on the 9-digit zip code.

What I find is that as I manipulate the WHERE clause to vary the number of rows

updated, performance degrades more than linearly. For example, updating

74K rows takes 4 minutes,

385K rows takes 8 minutes, and

896K rows takes 54 minutes, and

5000K rows takes over 16 hours.

My question is this: Since both tables are indexed the same way an in the same

order, which does the time required increase more than linearly with the number

of rows affected, and what can I do about it? (So far, what I do is run several

smaller updates, which is fine, but I would like to understand the reason.)

Here is the query:

UPDATE zhen.dbo.Client5M

SET msa = data.dbo.zip.msa,

blockgroup = data.dbo.zip.blockgroup,

longitude = data.dbo.zip.longitude,

latitude = data.dbo.zip.latitude

FROM data.dbo.zip9

WHERE (zhen.dbo.Client5M.zip9 < '2') AND

(zhen.dbo.Client5M.Zip9 = data.dbo.zip.zip9)

Thanks in advance.

Jim