У меня странная проблема в моем запросе.Я не настолько опытен в написании SQL-запросов, но я и не новичок.Это заставляет меня думать и искать по крайней мере час.
Запрос, который я пробовал (SELECT TOP (19785)..
) (цифры важны), выполняется примерно за 15 мс, но тот же самый запрос с увеличенным top всего на 1 выполняет 434Миз.Может кто-нибудь объяснить, почему это происходит?
Я прикрепил скриншот ниже, чтобы вы могли понять, о чем я говорю, если я не очень хорошо объяснил.
РЕДАКТИРОВАТЬ: Кроме того, забыл упомянуть, что эта таблица действительно проста, у нее нет внешних ключей и нет другого сложного поля, кроме двух десятичных знаков (для хранения широты и долготы)
РЕДАКТИРОВАТЬ2: Прикрепленный запросплан выполнения ниже.https://www.brentozar.com/pastetheplan/?id=H1PLtgkSN
РЕДАКТИРОВАТЬ3: Извините за ошибку, это очевидно, но я заметил, что таблица на самом деле имеет внешний ключ для страны.Кроме того, я заметил, что если я удалил поля TOP (N) и uniqueidentifier (guid), а затем повторно выполнил оба запроса с
ORDER BY Id OFFSET M ROWS
FETCH NEXT N ROWS ONLY;
, это показывает аналогичное время выполнения (~ 15 мс)
Это показывает, что я должен делать запросы частями, что не является большой проблемой, учитывая, что у меня должно быть разбиение на страницы в приложении, над которым я работаю.
Спасибо за вашу помощь ихороший день.