Вы просто не можете сделать это (эффективно) с помощью одного запроса, вам всегда понадобится один, чтобы выбрать результат, и один, чтобы получить общее количество элементов.
Существует способ улучшить его, хотя, вам нужно только количество строк в 2 запроса:
// Query one, to select the actual content:
Select * from articles where HTML like '%dummy%' LIMIT $start,$num_items
// Query two, select an index column, preferable a small int column:
Select id from articles where HTML like '%dummy%'
я работал на интернет-магазин, а не самая большая база данных, но 3500 продуктов, с 1 до N изображений, от 1 до N классов и некоторых других очень больших таблиц (в количестве), и что работает отлично :)
вы можете сделать это в 1 запрос, если вы хотите. Просто выберите весь пучок и сделайте строки пропусков PHP до достижения start
и сломайте цикл, когда вы достигнете своего limit
. Однако для этого требуется намного больше времени (и ресурсов!), Чем повторение запроса. Если вы хотите улучшить скорость, убедитесь, что указана колонка html
, которая сохранит много времени. Rememer, это (mysql-) базы данных производится для поиска быстро, PHP разве
Если у вас есть огромный набор данных, вы можете захотеть изменить тактику на всем пути. Вы можете подсчитать количество строк и создать новую таблицу, которую вы могли бы назвать чем-то вроде table_info
, и добавить строку с именем number_of_rows_in_TABLENAME
и обновить ее с помощью новой вставки и вычесть из нее одну из вас, удалив строку, но этот метод быстро становится неаккуратно забыли что-нибудь
Сохраните результаты в '$ _SESSION'? – putvande
Нет, что doenst исправить его проблему :) проблема заключается в двойном выборе, не сохраняя фактические результаты (что также не требовало сеанса) – Martijn