Нет смысла в подсчете размера списка для получения количества записей, так как мы реализуем нумерацию страниц и НЕ ДОЛЖНЫ загружать весь набор результатов за раз.
Я использую ROW_NUM на уровне базы данных для реализации логики разбиения на страницы. Нам нужно получить столько записей, сколько нам нужно, чтобы показать их на экране.
Пример: выберите * из Emp, где rownum> =: beginRecord и rownum <=: endRecord </p>
Логика будет такой же, но синтаксис может меняться в зависимости от типа базы данных. Нужно использовать вложенный запрос, если нам нужно сделать заказ по любому столбцу.
Полагаю, count (*) - дорогая операция, я предпочитаю разделение по.
Выберите Eno, Ename, (выберите количество (*) из emp) в качестве record_count из Emp - Дорого
Выберите Eno, Ename, count (*) over (split by eno) в качестве record_count из Emp - Предпочтительный.
Разделение по синтаксису может изменяться в зависимости от типа базы данных.
Я рассмотрел базу данных Oracle.
Не стесняйтесь комментировать / обсуждать.
Спасибо и С уважением,
Локеш Рангинени.