@JDMeezy

Как лучше оптимизировать вывод данных?

Есть около 650+ строк, которые мне нужно вывести в табличном варианте с пагинацией.

Все эти данные выбираются на основе 3 параметров, которые выбирает пользователь.

Как лучше реализовать логику получения данных. Получить все данные за один запрос, хранить их и на основе выбора пользователя, фильтровать и выводить нужные ему данные.

Или же после того как пользователь выбрал параметры, каждый раз делать запрос в БД и отображать ему данные ?

Также стоит учитывать что я не хочу выводить все данные сразу, а посредством пагинации.
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 2
Enokin
@Enokin
Full-stack разработчик
Вот пример на 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);
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Как лучше реализовать логику получения данных. Получить все данные за один запрос, хранить их и на основе выбора пользователя, фильтровать и выводить нужные ему данные.

Делай как тебе проще код писать. Наперед ни один архитектор не знает как лучше. Улучшение - это процесс итеративный. Но сначала тебе нужно поймать какой-то инцедент. Например performance issue. И уже начиная от этого улучшать.

Пока у тебя такого инцедента нет - делай максимально простой код и это будет правильное решение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы