2013-09-30 4 views
2

У моего приложения Android есть активность для представления данных из базы данных SQLite. Таблица db может содержать огромное количество строк. По соображениям производительности я хочу загрузить 20 строк из db за раз, а когда пользователь прокручивает список вниз до конца, прочитайте следующие 20 строк.Поддерживает ли sqlite чтение определенного количества строк для каждого запроса?

Так что я хочу использовать SQL заявление, как это:

select * from mytable where id > N and count = 20; 

Мне просто интересно, если SQLite поддерживает этот вид "count=20" функции для чтения на максимум 20 строк для запроса. Если это поддерживается, что такое синтаксис?

ответ

5

Да, это так. Это называется LIMIT:

SELECT * 
FROM mytable 
WHERE id > N 
LIMIT 20 

Вы также можете использовать дополнительный OFFSET пункт для запуска в определенной строке:

SELECT * 
FROM mytable 
WHERE id > N 
LIMIT 20 
OFFSET 100 
2

Вы можете использовать LIMIT and OFFSET указать набор возвращаемых строк.

Однако:

  1. Это рискованно, если другие потоки могут быть обновление базы данных, особенно, если ваш запрос будет использовать ORDER BY.

  2. Используйте инструменты, такие как Traceview, чтобы реально определить, сколько времени нужно, и используйте это, чтобы определить количество строк для извлечения. 20 кажется очень раздражающим.

  3. Если ваша «таблица может содержать огромное количество строк», вы должны сосредоточиться на интерфейсе поиска, не ожидая, что люди будут линейно просматривать через некоторый список, который достаточно длинный, чтобы гарантировать такую ​​сортировку.

Смежные вопросы