Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Проблема избыточной выборки в List и Catalog
Введение
Рассматривать будем на основе List. Аналогичная история и с компонентом Catalog.
Кратко - проблема в большом количестве ненужных данных при выборке одной страницы данных (вместо того, чтобы брать атрибуты 20 элементов, берутся атрибуты 20хN, где N - количество страниц).
В чем проблема?
В SELECT 5 процедуры Search передаются выводимые элементы каталога. Здесь мы должны брать только данные нужной там paging страницы.
В SELECT 6 - атрибуты этих элементов. Здесь также мы должны учитывать только атрибуты только отобранных через пагинацию элементов.
Зачастую в SELECT 6 попадают данные всей коллекции - это большой объем. При росте каталога search будет постепенно замедляться.
Как решить?
Сначала мы извлекаем нужные нам элементы в таблицу @ids (или временную таблицу #ids).
declare @ids table (id int)
insert into @ids
select ...
Затем нужно извлечь только элементы под пагинацию (с учетом сортировки) в переменную @pageIDs
insert into @pagedIDs
select dp.id from @ids ids
join au_projects dp on ids.id = dp.id
order by
case when @sort = 'rating' then rating end desc,
case when @sort = 'reviews' then reviews end desc,
case when @sort = 'created' then dp.created end desc,
case when isnull(@sort,'') = '' then dp.created end desc
OFFSET @PAGE_SIZE * (@page - 1) ROWS
FETCH NEXT @PAGE_SIZE ROWS ONLY;
Далее в SELECT 5,6 использовать нужно именно @pagedIDs, а не @ids.
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта