In meiner Anwendung arbeite ich mit einer großen Datenbank.Nähere 75000 Datensätze in einer Tabelle vorhanden (insgesamt 6 Tabellen sind da) .I wollen Daten aus drei verschiedenen Tabelle zu einem Zeitpunkt.i abgeschlossen, aber der Suchvorgang war langsam.wie kann ich den Suchvorgang optimieren?Der beste Weg zum Suchen von SQLite-Datenbank
Antwort
Ohne die Tabellenstruktur (oder Abfrage) sehen zu können, würde ich als erstes vorschlagen, einige Indizes zu den Tabellen hinzuzufügen.
Können sagen, Sie haben ein paar Tische wie:
Author
id
last_name
first_name
Subject
id
name
Book
id
title
author_id
subject_id
und Sie wollen alle Informationen über jedes der Bücher zu erhalten, die ein Autor mit last_name="Smith"
und first_name="John"
schrieb. Ihre Abfrage könnte wie folgt aussehen:
SELECT * FROM Book b
LEFT JOIN Subject s
ON s.id=b.subject_id
LEFT JOIN Author a
ON a.id=b.author_id
WHERE a.last_name='Smith'
AND a.first_name='John';
Es würden Sie die last_name
Spalte in der Tabelle Author
wollen einen Index (und vielleicht first_name
auch) haben.
Möglicherweise möchten Sie die Volltext-Suchmaschine verwenden und stattdessen SELECT ... MATCH-Abfragen ausführen. Beachten Sie, dass Sie die FTS-Engine aktivieren müssen (standardmäßig deaktiviert) und virtuelle Tabellen anstelle von regulären Tabellen erstellen. Sie können mehr darüber lesen here.
Ich denke nicht, dass es eine gute Idee ist, so viele Datensätze auf einem Telefon zu speichern. Was ich empfehlen würde (und ich mache das für eine Anwendung, die ich auch schreibe) ist, die Aufzeichnungen irgendwo auf einem Server zu speichern und über das Internet über SOAP/JSON/was auch immer abzufragen. – Nippysaurus
Können Sie uns die Anfrage zeigen? –
Wenn Sie Ihre Suchanfrage posten, versucht wahrscheinlich jemand, sie zu optimieren. Versuchen Sie zunächst, einen Index für einige Spalten zu erstellen. – cnu