MagicGTS
Новичок
Выборка каждой n-ой строки
Никак не могу сообразить, как сделать, чтобы не тормозило.
Есть таблица вида: id, name, .....
Нужен вывод постранично, и тут есть засада. Для облегчения жизни юзера, решил скрипту передавать не номер страницы, где находится юзер, а id элемента, который должен находится на этой странице. Вот тут и наступает самое интересное.
Условия к выводу у меня довольно просты, поле name выводится отсортированное по алфавиту. Для начала считаю двумя запросами количество записей, и количество записей перед той что "нужно показать юзеру". Эта часть считается почти мгновенно. А теперь нужно сгенерить ссылочки на странички, в которых должен фигурировать id записи. Вот тут я не придумал ничего лучше такого убожества:
В итоге при количестве записей около 8к сервер умирает секунд на 7-10, виной конечно лобовая реализация задуманного.
Идеальным решение будет выборка одним запросом, но с "фильтром", чтобы выводил каждую n-ую запись из запрошенных. Работающих решений не придумал, а похожего не удалось найти (может, плохо искал)?
Никак не могу сообразить, как сделать, чтобы не тормозило.
Есть таблица вида: id, name, .....
Нужен вывод постранично, и тут есть засада. Для облегчения жизни юзера, решил скрипту передавать не номер страницы, где находится юзер, а id элемента, который должен находится на этой странице. Вот тут и наступает самое интересное.
Условия к выводу у меня довольно просты, поле name выводится отсортированное по алфавиту. Для начала считаю двумя запросами количество записей, и количество записей перед той что "нужно показать юзеру". Эта часть считается почти мгновенно. А теперь нужно сгенерить ссылочки на странички, в которых должен фигурировать id записи. Вот тут я не придумал ничего лучше такого убожества:
PHP:
//$t_page общее количество страниц полученное ранее
//$dpp количество записей, выводимое пользователю (я использую 60)
for($i=0;$i<$t_page;$i++)
{
$query_str="SELECT id from table order by name LIMIT ".($i*$dpp).",1;";
$query=mysql_query($query_str,$db);
//Тута выдаём полученные id
}
Идеальным решение будет выборка одним запросом, но с "фильтром", чтобы выводил каждую n-ую запись из запрошенных. Работающих решений не придумал, а похожего не удалось найти (может, плохо искал)?
