2017-07-26 5 views
0

In meiner App sehe ich ein Performance-Problem beim Laden von DB. Ich habe eine Liste mit RecylerView und einem Cursor für Daten. Sobald die Anzahl der Datensätze über 1000 hinausgeht, wird die Liste zu langsam zum Laden oder für eine Operation. Die Abfrage verwendet diese WHERE-Klausel: COL1 = something AND (COL2 LIKE something OR col3 LIKE something OR col4 LIKE something) AND col5 is NOT NULLIndex für Tabelle definieren

Was wäre der ideale Weg, um in diesem Fall einen Index zu definieren, um bessere Leistung zu erzielen? Reduziert auch die Anzahl der Spalten im Abfrageergebnis die Leistung?

+0

RecyclerView.Adapter – png

+0

Ich habe einen benutzerdefinierten Adapter, der RecyclerView.Adapter – png

+0

erstreckt Sie bedeuten, eine bestimmte Methode oder den ganzen Adapter? – png

Antwort

0

Indizes können beim Suchen oder Sortieren helfen. In Ihrer Abfrage sollte col1 indiziert werden, eventuell col5, wenn viele Zeilen mit einem NULL-Wert ausgefiltert werden können. (Eine Abfrage kann nur einen einzigen Index pro Tabelle verwenden, daher würde dies einen zweispaltigen Index erfordern.)

Ein Index kann nicht mit einer langsamen Listenansicht helfen, da die Datenmenge der Liste nicht reduziert wird lädt aus der DB.

Um die Liste zu beschleunigen, müssen Sie die Anzahl der Einträge reduzieren. Siehe dynamic listview adding “Load more items” at the end of scroll, um das Laden von Einträgen zu verzögern. Die optimale Lösung wäre jedoch, bessere Filter hinzuzufügen, sodass Sie nie so viele Einträge laden müssen. (Wie soll der Benutzer sie überhaupt behandeln?)

Verwandte Themen