Как подсчитать общее количество строк при добавлении limit в Android sqlite

#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, который получает общее количество строк. Это не повторяется для каждой строки.