2016-08-08 13 views
1

Ich habe ein Datenbankwörterbuch haben etwa 50.000 Datensätze. Ich habe Indizes erstellt und diese zum Filtern der Daten verwendet. Aber als ich versuchte, den Like-Operator zu verwenden, funktionierten die Indizes nicht und meine Anwendung verlangsamte sich, wenn ich den Eingabeschlüssel in Searchview filterte, wenn Daten in der Datenbank nicht gefunden wurden (Daten werden in listview geladen und ich benutze auch asynctask). Und ich denke der Grund dafür ist, dass Indizes nicht mit Like Operator funktionieren. Also habe ich versucht, meine Select-Abfrage durch Vergleichsoperator zu ändern. Aber es funktioniert nicht mit meinem Denken. Ich möchte, dass es so funktioniert, wie es ist, aber es ist nicht so. Also jemand weiß, was ist falsch in ausgewählten Abfrage und wie kann ich es beheben?Wie Vergleichsoperator verwendet wird, um Daten in SQLite zu filtern

Hier ist meine Auswahlabfrage mit Vergleichsoperator

String selectQuery = "SELECT * FROM '"+TABLE_ENG_VIE+"' WHERE word >= '"+keyFilter+"' LIMIT 20 OFFSET '"+offset+"'"; 

Hier ist meine SELECT-Abfrage LIKE-Operator für das Lesen meiner Frage und so sorry

String selectQuery = "SELECT * FROM '"+TABLE_ENG_VIE+"' WHERE word LIKE '"+keyFilter+"%' LIMIT 20 OFFSET '"+offset+"'"; 

Dank zu verwenden, wenn ich, weil mein Englisch nicht gelöscht explain ist nicht gut. Nochmals vielen Dank und viel Glück für Sie.

+0

try „glob“ statt „wie“ – pskink

+0

@pskink dankt Ihnen bro. Du rettest meinen Tag :) –

Antwort

0

Änderung Ihrer Abfrage unten, mich nach dir getäuscht haben, während LIKE Zustand Schreiben

String qry = "SELECT * FROM '" + TABLE_ENG_VIE + "' WHERE word LIKE '%" + keyFilter + "%';"; 
+0

Ich denke, Ihre Abfrage zu filtern, alle Daten, die Schlüsselwort gleich keyFilter haben. Aber ich möchte nur die Daten filtern, deren Zeichen mit "keyFilter" beginnen. Also benutze ich 'keyFilter%'. Und wenn Sie den Like-Operator verwenden, funktionieren die Indizes nicht. Es macht die Datenbank ein paar Sekunden zum Filtern verloren. –

+0

Entschuldigung, ich habe gerade vergessen, diese Variable hinzuzufügen, überprüfen Sie bitte aktualisierte Antwort @ XiaoKing –

+0

Ihre Abfrage ähnlich aussehen: SELECT * FROM anh_viet WHERE Wort wie '% lov%'. Die Ergebnisse für ausgewählte Abfrage oben sind alle Wörter haben "Lov" -Charakter wie: Geliebte, Nelke, Handschuh und so weiter ... Aber ich möchte, dass mein Ergebnis muss: Liebe, liebenswert und so ähnlich. –

Verwandte Themen