2011-02-09 3 views
1

У меня есть массив с более чем 10k результатами (сгенерированный MySQL-запросом), и мне интересно, что лучше всего подходит для его разбиения на страницы? Извлеките все данные сначала, затем разделите их на страницы или еще один быстрый/лучший способ?Большие массивы массивов PHP

+1

Вы можете сделать это в связке с MySQLs 'limit' и' offset' методами. –

+0

см. Эту основную статью подкачки http://www.phpfreaks.com/tutorial/basic-pagination –

ответ

5

Используйте синтаксис MySQL LIMIT, чтобы получать только нужные результаты из базы данных, прежде чем он достигнет вашего PHP-кода.

Что-то вроде этого:

$offset = 0; 
$per_page = 25; 

$query = "SELECT * FROM `blah` LIMIT $offset, $per_page"; 

... 
3

Как было предложено, вы можете использовать LIMIT. Для того, чтобы узнать общее количество результатов, можно дополнительно сделать:

SELECT SQL_CALC_FOUND_ROWS * FROM `table` ... LIMIT 0, 20 

Тогда:

SELECT FOUND_ROWS() AS `total_results` 

Чтобы получить максимальное количество страниц вашего Paginator в.

+0

http://www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/ Он говорит, что использование COUNT и SELECT снова с пределом быстрее. – Calmarius

0

Возможно, вы захотите выполнить запрос COUNT(), прежде чем потянуть свой контент, чтобы определить, сколько строк у вас есть. Общий algortihm для выяснения того, сколько страниц нужно тогда

CEIL (totalRows/rowsPerPage)

Смежные вопросы