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
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
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.
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