2009-07-24 6 views
0

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

+0

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

+0

Können Sie uns die Anfrage zeigen? –

+0

Wenn Sie Ihre Suchanfrage posten, versucht wahrscheinlich jemand, sie zu optimieren. Versuchen Sie zunächst, einen Index für einige Spalten zu erstellen. – cnu

Antwort

0

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.

1

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.