2012-12-26 15 views
8

Android Entwickler Handbuch scheint FTS3 in SQLite DB zu bevorzugen, wenn Suche benötigt wird. Ich lese die FTS3-Beschreibung und es scheint, dass es eine virtuelle Tabelle anstelle einer permanenten Tabelle erstellt. Was ist der Unterschied zwischen virtueller Tabelle (FTS3) und normaler Tabelle in SQLite? Ist die virtuelle Tabelle dauerhaft und bleibt auch nach dem Beenden der App in der Datenbank? Vielen Dank.Normale Tabelle vs virtuelle Tabelle SQLite DB

Antwort

5

Eine virtuelle Tabelle ermöglicht der SQLite-Engine den Zugriff auf den Inhalt eines Datenspeichers mithilfe von (normalerweise) nicht SQLite-Code. Dadurch kann der Entwickler SQLite benutzerdefinierte Funktionen hinzufügen.

Im Falle von FTS war es ursprünglich kein Teil der SQLite-Engine. Es handelte sich um Code, der für SQLite extern war und dem Endbenutzer eine Volltextsuche für Daten ermöglichte.

Ist eine virtuelle Tabelle permanent? Das hängt von der Implementierung ab. Für FTS sind die Daten permanent. Sie könnten jedoch eine Implementierung erstellen, die RAM für den Speicher verwendet - dies würde offensichtlich verschwinden, wenn die Anwendung beendet wird.

Mehr auf virtuelle Tabellen: http://www.sqlite.org/vtab.html

0

Ich denke, es genauer zu sagen, dass die API-Leitfaden für eine Suchschnittstelle zu schaffen stellt fest, dass FTS3 Volltextsuche funktioniert viel schneller als LIKE, auf die Eigenschaften der Abhängigkeit Suche. Zum Beispiel erlaubt eine reguläre SQLite-Abfrage, die LIKE verwendet, Platzhalter, während eine FTS3-Abfrage, die MATCH verwendet, dies nicht tut. Wenn Sie nach Tokens suchen möchten, können Sie mit FTS3 gehen. Wenn Sie ein unpräzises Spiel machen, müssen Sie unbedingt mit LIKE gehen.

+0

Ich denke, Wildcards sind erlaubt, wenn MATCH auch verwendet wird. Sie müssen nur basierend auf dem, was ich auf der SQLite-Website gelesen habe. – androidnerd