У меня есть таблица с множеством пользователей. Я хочу выкопать номер строки одной указанной записи в соответствии с указанным 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, я решил спросить здесь. Заранее спасибо.