2009-09-09 1 views
0

Я зациклил данные из mysql, и это довольно длинный список. Каков наиболее эффективный способ разбиения на страницы? В настоящее время я рассматриваю этот вопрос: http://www.evolt.org/node/19340Рекомендации по эффективному учебнику для разбивки на страницы?

Не стесняйтесь рекомендовать лучший, спасибо!

+0

выглядит как немного беспорядок, но идеи все там. Вы должны быть в состоянии немного почистить его;) Хороший проект для ya! : D – mpen

ответ

2

Вместо того, чтобы извлекать все из базы данных, как в статье, вы можете просто выбрать строки, которые вы можете фактически отобразить, т.е. если у вас есть 10 элементов на странице, просто выберите 10 - и затем выберите общее количество строк. Если БД является большой, это может быть намного более эффективным, даже если это два запроса.

+2

Я считаю, что LIMIT - это то слово, которое вы ищете. – Zoe

0

Я использовал пример в книге Wicked Cool PHP в качестве отправной точки. Очень аккуратный и хорошо объясненный ИМО.

0

Вы хотите что-то вроде

SELECT * FROM your_table WHERE condition = true ORDER BY some_field LIMIT 100, 10 

Где 100 это количество записей, чтобы пропустить и 10 это количество строк, извлекаемых. Убедитесь, что у вас есть индексное покрытие condition и поля критериев критериев, если вы хотите иметь максимальную производительность.

0

Это действительно хорошая функция/класс, которая будет частью вашей стандартной библиотеки. Я бы настоятельно рекомендовал вам выполнить следующие действия:

  • Запрос на выполнение общих элементов (строк).
  • Код для определения верхнего & нижний предел в зависимости от количества элементов, которые вы хотите отобразить на странице.
  • Второй запрос LIMIT'ed соответственно.

я бы разместить код, но что бы удовольствие от него :)

1

Как Сорин Мокану сказал, если вы хотите заказать результат по некоторым критериям, может быть, времени изменения или некоторой частоте , тогда сортировка будет большим штрафом за производительность. Даже если вам нужны только 10 записей, вам все равно нужно отсортировать все (возможно, миллионы) записей, если только вы не убедитесь, что индекс используется и используется правильно.

Вот отличная статья о пагинации с MySQL: http://www.percona.com/ppc2009/PPC2009_mysql_pagination.pdf

Или с сайта MySQL: http://dev.mysql.com/doc/refman/5.5/en/order-by-optimization.html