2012-12-26 13 views
8

Il manuale dello sviluppatore Android sembra preferire FTS3 in SQLite DB quando è necessaria la ricerca. Ho letto la descrizione di FTS3 e sembra che crea una tabella virtuale invece di una tabella permanente. Qual è la differenza tra la tabella virtuale (FTS3) e la tabella normale in SQLite? La tabella virtuale è permanente e rimane nel database anche dopo aver chiuso l'app? Grazie.Tabella normale vs tabella virtuale SQLite DB

risposta

5

Una tabella virtuale consente al motore SQLite di accedere ai contenuti di un archivio dati, utilizzando il codice (solitamente) non SQLite. Ciò consente allo sviluppatore di aggiungere funzionalità personalizzate a SQLite.

Nel caso di FTS, originariamente non faceva parte del motore SQLite. Era un codice esterno a SQLite, che permetteva all'utente finale di eseguire una ricerca di testo completa sui dati.

È un tavolo virtuale permanente? Dipende dall'implementazione. Per FTS i dati sono permanenti. Tuttavia, è possibile creare un'implementazione che utilizza la memoria RAM per l'archiviazione, che ovviamente scomparirà quando l'applicazione verrà chiusa.

Altro su tavoli virtuali: http://www.sqlite.org/vtab.html

0

Penso che sia più esatto dire che la guida API per la creazione di un'interfaccia di ricerca rileva che FTS3 fa ricerca full-text molto più veloce di LIKE, a seconda delle caratteristiche del ricerca. Ad esempio, una normale query SQLite che utilizza LIKE consente i caratteri jolly, mentre una query FTS3 che utilizza MATCH non lo fa. Se si desidera cercare i token, si consiglia di utilizzare FTS3. Se stai facendo una partita imprecisa, devi assolutamente andare con LIKE.

+0

Penso che i caratteri jolly siano consentiti anche quando si utilizza MATCH. Devi solo mettere * basato su ciò che ho letto sul sito Web SQLite. – androidnerd