Конечно, сортировка по случайному запросу занимает некоторое время, но если у вас возникают проблемы с использованием того же самого разбитого на страницы запроса, который используется регулярно, либо в настройке базы данных что-то не так (неправильная индексация / вообще ничего, слишком мало памяти и т. Д. Я не db-менеджер) или вы делаете пагинацию серьезно неправильно:
Ужасно неправильно: например, делая select * from hugetable where somecondition;
в массив, получая количество страниц с помощью array.length, выбираю соответствующие индексы и задаю массив, а затем повторяю это для каждой страницы ... Это то, что я называю серьезно неправильно.
Лучшее решение для двух запросов: один получает только счетчик, а другой - результаты, используя limit
и offset
. (Некоторые проприетарные, нестандартные sql-серверы могут иметь один вариант запроса, я не знаю)
Плохое решение может действительно хорошо работать на небольших таблицах (на самом деле немыслимо, что оно быстрее на очень маленьких таблицах, потому что затраты на создание двух запросов больше, чем получение всех строк в одном запросе. Я не сказать это - это так ...) но как только база данных начинает расти, проблемы становятся очевидными.