Как лучше всего разбивать результаты на страницы в php?

StackOverflow https://stackoverflow.com/questions/109027

  •  01-07-2019
  •  | 
  •  

Вопрос

Мне нужно отобразить на сайте много страниц новостей.
Должен ли я выполнять разбиение на страницы в запросе к базе данных с использованием лимита или делать это в своем php-скрипте после получения всех результатов?

Это было полезно?

Решение

Используйте лимит в SQL!Каждый раз!

В противном случае вы перебрасываете значительно больше данных, чем нужно, что делает ваши сценарии неоправданно медленными и приведет к проблемам масштабируемости по мере увеличения объема данных в ваших таблицах.

Лимит – твой друг!

Другие советы

Ограничение использования — вы не хотите передавать большие объемы данных из базы данных в механизм сценариев, если можете этого избежать.

Если вы хотите работать только с СУБД, которая это поддерживает, делайте это в СУБД.Если вы хотите поддерживать другие СУБД в будущем, добавьте слой между ними, который может обрабатываться в зависимости от текущей СУБД.

Вы можете использовать некоторые существующие библиотеки, чтобы помочь вам:

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

Вот руководство Я просто погуглил, там все есть...

Помимо использования LIMIT, я бы предложил использовать явное WHERE предложение, чтобы установить смещение и упорядочить результаты в этом столбце.Например:

--- First page (showing first 50 records)
SELECT * FROM people ORDER BY id LIMIT 50
--- Second page
SELECT * FROM people WHERE id > 50 ORDER BY id LIMIT 50

Это еще больше ограничивает количество возвращаемых строк до тех, которые находятся в желаемом диапазоне.Используя WHERE подход (в отличие от LIMIT предложение с отдельным смещением, например. LIMIT 50,50) позволяет эффективно справляться с постраничным просмотром записей с другими естественными ключами, например.в алфавитном порядке по имени или по дате.

Лично я бы использовал для этого запрос.Очевидно, что это может измениться, если вы имеете дело с AJAX и тому подобным, но простое выполнение базового ограничения в запросе и вывод результатов — это просто и эффективно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top