• you probably need to rewrite the query and remove "TOP" clause - it executed on local server, not remote, so you pulling entire resultset between boxes.

    simplest way

    Declare @MetricDate smalldatetime

    Select @MetricDate = MAX(MetricDate) from Server1.MyDatabase.dbo.MyTable where col4 = @ZipCol AND col1 = @DOB

    SELECT @DOB, col2, col3

    FROM Server1.MyDatabase.dbo.MyTable

    WHERE col4 = @ZipCode

    AND col1 = @DOB

    AND col5 = @MetricDate

    best way - OPENQUERY per suggestion above

    index should be by col4,col1,MetricDate - your modification misses col1