I have been doing some Android work involving medium size databases and have come across some barriers to using SQLite. With tens of thousands of records, performance degrades such that the use of the Android CursorAdapter together with a ListActivity are no longer viable.
More specifically, with just tens of thousands of records, opening the database cursor takes several seconds. Also, moving backwards using a cursor is far too slow. Digging deeper, other developers have commented on problems with Listview.setAdapter() and more specifically its call to cursor.getCount().
Anything more than 12,000 records and Android’s SQLite can’t provide the required performance for the UI performance to remain acceptable. In these cases you have to either limit the number of rows returned (via SQL) or resort to more custom ways to store your data. This goes some way to explaining why there aren’t any generic database applications on the Android Market.

