Задать вопрос
Therapyx
@Therapyx
Data Science

Как правильно делать Select из большого кол-ва данных (gridview + paging)?

Заглянул в будушее и представил, что в 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
  • Вопрос задан
  • 609 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@antiso
Если вопрос по MSSql, то LIMIT в помощь:
select * from Purchase where .... 
order by p_date desc SKIP @page*@limit LIMIT @limit;

Для страницы 5 по 20 будет "SKIP 4*20 LIMIT 20"

Источник https://msdn.microsoft.com/en-us/library/vstudio/b...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@maxtm
Make money, not job
Не пытайтесь проверить "скорость" работы на дев-машине, т.к. прод-машины в разы быстрее.

По моему опыту, MySQL на 30 миллионной таблице легко справляется с поиском по маске (LIKE 'abc%') за 0.5 - 1 сек.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы