Это не правильно.
У меня есть две возможности:
1) Статистика в таблицах устарела.Перестройте индексы и обновите статистику.
2) Как вы сказали, записи таблицы Geography занимают много страниц (не одна запись, охватывающая несколько страниц, поскольку она не может, но запись близка к отметке 8K).В этом случае, как ни странно, может помочь создание другого некластеризованного индекса в кластеризованном индексе.
ОБНОВЛЕНИЕ
Я рад, что это сработало.Теперь некоторые пояснения.
Прежде всего, если что-то не так и план выполнения выглядит странно, всегда смотрит на статистику и перестраивает индексы.
Создание некластеризованного индекса для кластеризованного индексаобычно это не должно приносить никакой пользы, но если в таблице много записей, а запись близка к пределу в 8 КБ, это полезно.Как вы знаете, SQL, когда он идет на диск, чтобы загрузить запись, он загружает страницу 8K.Аналогичным образом, при переходе на индексы он загрузит страницу 8K.Теперь, когда индекс представляет собой 4-байтовое целое число, это означает загрузку идентификатора для 2000 записей, в то время как он собирается загружать несколько записей, если он использует кластерный индекс (имейте в виду, что все, что нам нужно, это идентификатор для бита JOIN).Теперь, когда это бинарный поиск, я не ожидаю, что он сильно поможет.Так что, возможно, что-то еще не совсем правильно, но трудно догадаться, не увидев систему.