Проблема избыточной выборки в 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 псевдофильтры
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом
Это быстрое внесение изменений
по ходу эксплуатации программы. Как создается функционал на платформе
Это простой удобный интерфейс
адаптация под мобильные устройства. Про юзабилити платформы