#android #android-sqlite
#Android #android-sqlite
Вопрос:
Я использую SQLITE в Android, и у меня возникла проблема, я хочу получить общее количество строк при применении limit. Например, если я применяю ограничение в 100 для разбивки на страницы, но имеется около 2000 данных. Я хочу сделать запрос, в котором я могу получить только 100 строк, но количество должно возвращать 2000, т. е. общее количество строк. Вещи, которые я пробовал
SELECT * ,count(*) OVER() AS full_count FROM table LIMIT 0,100
SELECT SQL_CALC_FOUND_ROWS, * FROM table LIMIT 0,100
Я знаю, что есть вложенный запрос, который будет работать, но у меня около 2 миллионов строк, и для разбивки на страницы я извлекаю только 100 строк за раз. Таким образом, вложенный запрос полностью замедлит процесс.
Комментарии:
1. Вы действительно хотите в каждой строке видеть общее количество строк таблицы?
Ответ №1:
Используйте CTE, чтобы получить общее количество строк:
with cte as(
select count(*) total from table
)
select *, (select total from cte) total
from table limit 0, 100
Комментарии:
1. это работает, но по-прежнему занимает много времени. Я думаю, что теперь я сделаю еще один вызов db только для получения количества
2. Нет другого способа, кроме подсчета общего количества строк. Теперь я сделаю еще один вызов db… Этот cte — это вызов 1, который получает общее количество строк. Это не повторяется для каждой строки.