Проблема избыточной выборки в 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 поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций
- Каталоги Создание каталога товаров на сайте Создание гибкого каталога с фильтрами (list) Интеграция Яндекс YML. Импорт-экспорт каталога товаров в YML Как сделать каталог List с внешней разметкой Импорт товаров через XML файлы (YML, CML и др). Интеграция с 1С Базовая верстка для каталога элементов Как провести массовую обработку картинок (качество, размеры) Проблема избыточной выборки в List и Catalog Создание сущностей для учета со своим набором полей (из editor, без SQL) Как добавить в URL каталога List псевдофильтры Каталог List. Создание кастом фильтра со своей разметкой
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта