Эффективный способ найти страницу с определенной записью в MS SQL - PullRequest
0 голосов
/ 05 марта 2020

У меня есть таблица с множеством пользователей. Я хочу выкопать номер строки одной указанной записи в соответствии с указанным c порядком.

Почему: Я отображаю (например, в алфавитном порядке) упорядоченных пользователей на экране с помощью подкачки. Я вставляю нового пользователя и мне нужно показать его на нужной странице в нужном месте. Требуемый результат, подобный этому.

Список упорядочен по фамилии, имени и дате рождения. Над этими тремя столбцами, установленными в базе данных, есть индекс из нескольких столбцов. Я добавляю нового пользователя и хочу загрузить нужную страницу и выделить его.

Мой запрос выглядит так:

  (
  SELECT ROW_NUMBER() OVER(ORDER BY Surname, Firstname, Birthdate) AS Row, id
  FROM Users
  )
  SELECT * FROM MyTable WHERE id = 140123

Проблема, которую я хочу решить: Когда я отправляю запрос SQL (используя MS SQL), сканирование индекс используется. Это слишком медленное решение, потому что я предполагаю, что в таблице присутствуют миллионы пользователей.

best решение будет использовать Entity Framework (как я его использую) ), но также вполне допустим собственный запрос.

Я считаю, что я не первый, кто ищет решение этой проблемы, и после дня, проведенного в Google, я решил спросить здесь. Заранее спасибо.

...