Заглянул в будушее и представил, что в 1 из таблиц будет к примеру 1М строк. Решил добавить и проверить как будет все работать. К сожалению мои ожидания совсем не оправдались, и к примеру, чтобы на локальной базе переключится между страницами пейджинга, требуется где-то ~5 секунд. (п.с. а это только от одного пользователя), в дальнейшем все может быть куда хуже.
В голову сразу пришла идея делать селект какого-либо диапазона или же первые "х" строк, но тут опять же получается проблема. А если юзеру нужно будет отсортировать в дальнейшем данные, которые он добавлял 3 года назад? Собственно я в полном замешательстве. Опытные люди, подскажите пожалуста как лучше всего действовать в таких ситуациях? :)
П.с. На данный момент select запрос происходит через следующую процедуру:
ALTER Procedure [dbo].[usp_Purchase_Select_All] (
@SelectByDate1 date = null,
@SelectByDate2 date = null,
@ddl_Category varchar(70) = null,
@UserID int
) as
select *
from Purchase
where UserID = @UserID
and P_Date >= coalesce(@SelectByDate1, p_Date) //параметры для сортировки(если не пустые)
and P_Date <= coalesce(@SelectByDate2, p_Date) //по дате до, после и категориям
and P_Text_ddl = coalesce(@ddl_Category, P_Text_ddl)
order by p_date desc