Как лучше оптимизировать вывод данных?
Есть около 650+ строк, которые мне нужно вывести в табличном варианте с пагинацией.
Все эти данные выбираются на основе 3 параметров, которые выбирает пользователь.
Как лучше реализовать логику получения данных. Получить все данные за один запрос, хранить их и на основе выбора пользователя, фильтровать и выводить нужные ему данные.
Или же после того как пользователь выбрал параметры, каждый раз делать запрос в БД и отображать ему данные ?
Также стоит учитывать что я не хочу выводить все данные сразу, а посредством пагинации.
Дополнительно:
Если будет именно пагинация, то запрос с лимитом, если подгрузка через аякс, то можно все сразу тащить
Ответы:
Вот пример на php + mysql. Если навесить индексы на поля будет весьма быстро работать
$limit = 10; // количество записей на одну страницу $page = $_GET['page']; // получаем номер страницы из URL $offset = ($page - 1) * $limit; // получаем параметры выбора пользователя $param1 = $_GET['param1']; $param2 = $_GET['param2']; $param3 = $_GET['param3']; // подготавливаем и выполняем запрос $stmt = $pdo->prepare('SELECT * FROM my_table WHERE column1 = :param1 AND column2 = :param2 AND column3 = :param3 LIMIT :limit OFFSET :offset'); $stmt->bindValue(':param1', $param1); $stmt->bindValue(':param2', $param2); $stmt->bindValue(':param3', $param3); $stmt->bindValue(':limit', $limit, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); |
$limit = 10; // количество записей на одну страницу $page = $_GET['page']; // получаем номер страницы из URL $offset = ($page - 1) * $limit; // получаем параметры выбора пользователя $param1 = $_GET['param1']; $param2 = $_GET['param2']; $param3 = $_GET['param3']; // подготавливаем и выполняем запрос $stmt = $pdo->prepare('SELECT * FROM my_table WHERE column1 = :param1 AND column2 = :param2 AND column3 = :param3 LIMIT :limit OFFSET :offset'); $stmt->bindValue(':param1', $param1); $stmt->bindValue(':param2', $param2); $stmt->bindValue(':param3', $param3); $stmt->bindValue(':limit', $limit, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
- Я бы только поменял на $page = abs(intval($_GET['page'] ?? 1)); если делать на скорую руку без валидации
Как лучше реализовать логику получения данных. Получить все данные за один запрос, хранить их и на основе выбора пользователя, фильтровать и выводить нужные ему данные.
Делай как тебе проще код писать. Наперед ни один архитектор не знает как лучше. Улучшение - это процесс итеративный. Но сначала тебе нужно поймать какой-то инцедент. Например performance issue. И уже начиная от этого улучшать.
Пока у тебя такого инцедента нет - делай максимально простой код и это будет правильное решение.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для оптимизации вывода данных на сайте можно использовать несколько подходов. Вот несколько рекомендаций:
1. **Использование кэширования**: Одним из способов оптимизации вывода данных является кэширование. Вы можете кэшировать часто используемые данные, чтобы уменьшить количество запросов к базе данных и ускорить загрузку страницы. Для этого можно использовать встроенные инструменты кэширования в PHP, такие как Memcached или Redis.
2. **Оптимизация запросов к базе данных**: При работе с базой данных стоит оптимизировать запросы. Используйте индексы, чтобы ускорить выполнение запросов. Также старайтесь объединять запросы и избегать лишних запросов в циклах.
3. **Оптимизация кода**: Проверьте свой код на наличие лишних циклов, условий и операций. Используйте эффективные алгоритмы и старайтесь минимизировать количество операций.
4. **Использование пагинации**: Если у вас большой объем данных, используйте пагинацию для разделения данных на страницы. Это поможет ускорить загрузку страницы и улучшить пользовательский опыт.
5. **Оптимизация изображений и других ресурсов**: Убедитесь, что ваши изображения оптимизированы для веба и имеют правильный размер. Также используйте сжатие и кэширование для других ресурсов, таких как CSS и JavaScript файлы.
Применение этих рекомендаций поможет вам оптимизировать вывод данных на вашем сайте и улучшить его производительность.