Каков наилучший способ разбить результаты в php - PullRequest
5 голосов
/ 20 сентября 2008

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

Ответы [ 6 ]

10 голосов
/ 20 сентября 2008

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

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

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

10 голосов
/ 20 сентября 2008

Использовать лимит - вы не хотите передавать массу данных из базы данных в механизм сценариев, если можете этого избежать.

2 голосов
/ 21 сентября 2008

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

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

Вот учебник Я только что гуглил, в котором есть все ...

2 голосов
/ 20 сентября 2008

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

1 голос
/ 07 января 2009

В дополнение к использованию 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) позволяет эффективно справляться с постраничным просмотром записей с другими естественными ключами, например, в алфавитном порядке по имени или по дате.

0 голосов
/ 20 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...