alpes
Весь мир на ладони
Постраничный вывод составных запросов
Есть задача построить постраничный вывод информации с базы данных, причем информацию которую нужно вывести можно фильтровать путем выбора на первой странице нужных параметров. Всего таких параметров (значение на свой столбец) полтора десятка, а также существует поле ввода для контекстного поиска.
В силу того что не малый запрос нужно будет повторять по сути дважды для каждой страницы (порции данных). Дважды потому что:
сначала подсчитать COUNT записей удовлетворяющих выборке для отображения количества страниц и ссылок на них;
затем в зависимости от запрошенной страницы выбирать через LIMIT нужную порцию данных.
Смущает то, что база не маленькая и для каждой страницы нужно заново запускать такие ресурсоемкие задачи.
Поэтому есть идея выполнить выборку всех ключей родительской таблицы удовлетворяющих запрошенным параметрам еще при первом запросе первой порции данных и полученный и отсортированный в нужном порядке такой массив ключей куда-нибуть запихнуть, ну а потом через механизм сессий выбирать из этого массива нужную порцию ключей и по ним уже выбирать данные.
В связи с этим вопрос: насколько будет правильный такой подхот?
А также куда лучше запихнуть такой массив ключей: прямо массивом в сессию? Или в силу того что ключей может быть очень много, например не один фильтр не выбран, сериализовать его в ячейку отведенной для этих целей таблицы, ну а в сессии передавать всего ссылку на эту запись?
Есть задача построить постраничный вывод информации с базы данных, причем информацию которую нужно вывести можно фильтровать путем выбора на первой странице нужных параметров. Всего таких параметров (значение на свой столбец) полтора десятка, а также существует поле ввода для контекстного поиска.
В силу того что не малый запрос нужно будет повторять по сути дважды для каждой страницы (порции данных). Дважды потому что:
сначала подсчитать COUNT записей удовлетворяющих выборке для отображения количества страниц и ссылок на них;
затем в зависимости от запрошенной страницы выбирать через LIMIT нужную порцию данных.
Смущает то, что база не маленькая и для каждой страницы нужно заново запускать такие ресурсоемкие задачи.
Поэтому есть идея выполнить выборку всех ключей родительской таблицы удовлетворяющих запрошенным параметрам еще при первом запросе первой порции данных и полученный и отсортированный в нужном порядке такой массив ключей куда-нибуть запихнуть, ну а потом через механизм сессий выбирать из этого массива нужную порцию ключей и по ним уже выбирать данные.
В связи с этим вопрос: насколько будет правильный такой подхот?
А также куда лучше запихнуть такой массив ключей: прямо массивом в сессию? Или в силу того что ключей может быть очень много, например не один фильтр не выбран, сериализовать его в ячейку отведенной для этих целей таблицы, ну а в сессии передавать всего ссылку на эту запись?