SQL Server Remote Query issue...
Date: 09/19/05
(SQL Server) Keywords: database, sql
Alright, here's the scenario. I have 65 million row table of zip codes... the table just has three columns: zip_cd varchar(10), lattitude, and longitude values. Zip_cd is varchar(10) because we have to store zip + plus 4 values in "xxxxx-xxxx" format... and no, my senior DBA has already overruled me adding two more numeric columns which would offer more optimized indexing. There's a clustered index on the zip_cd and we only ever run lookups on zip_cd, to get lat/long values.
Anyway, we have one simple query as follows:
--
DECLARE @zip_cd varchar(10)
SET @zip_cd = '60440-0001'
IF EXISTS(SELECT zip_cd
FROM serverX.databaseY.dbo.geodata
WHERE zip_cd = @zip_cd)
PRINT 'one'
ELSE
PRINT 'two'
--
Starting late last week, one of our servers running this query started taking forever and a day. Upon running it manually and checking the execution plan, I see that SQL Server, in all of its wisdom, decided to run the "SELECT zip_cd" portion WITHOUT the WHERE clause on the remote server, THEN apply a "filter" step for the WHERE clause. I attempted to replicate this on other servers and 2/3s of our other servers runs the query correctly, by sending everything to the remote server, whereas 2 other servers also just pull all 65 million rows down THEN filters it locally.
So my question is this... how in the hell can I force SQL Server to run the query in one fashion, rather than another? I know about using table and query hints, but the problem is that this is a remote server scenario, which Query Analyzer was complaining that index hints won't work.
Help?
x-posted...
Source: http://www.livejournal.com/community/sqlserver/34761.html