Есть таблица на 200 000 записей с такими индексами:
location (ASC), freebonus_day (DESC)
freebonus_day (DESC)
vkid (DESC) - первичный кластер.
arena_win (DESC)
credits (DESC)
exp (DESC)
level (DESC), search_name (DESC)
side (ASC)
win (DESC)
work (DESC)
На всякий случай, дал все индексы.
Выполняем такой запрос:
SELECT TOP 100 vkid, online, side, name, level FROM sw.dbo.users where location=@location and freebonus_day<@next_day and freebonus_day>@prev_day and vkid>-100 order by online DESC;
План запроса:
habrastorage.org/files/046/5df/ed2/0465dfed236843f...
(слишком широкий)
Запрос выполняется в среднем за: 0,67 мс, я б считал это нормальным, но такой план запроса навел на мысли, что что-то не так.
Поле online не индексируется, так как оно обновляется раз в несколько секунд.
Сейчас большую часть процессорного времени тратит 2 запроса:
1) этот
2) установка онлайна пользователя ( UPDATE sw.dbo.users SET online=@time WHERE vkid = @vkid;)
Вот наиболее тяжелые запросы:
Интересует, как можно все это ускорить?