Domanda

Sono transizione un'applicazione di utilizzare un database SQLite normale a uno con ricerca a testo integrale abilitata. Ha diverse colonne BLOB che le cose negozio come la firma digitale, che ovviamente non hanno bisogno di essere indicizzati. Ho letto che altri le persone a risolvere questo spostando tutti i dati non testuali a un non-FTS3 tabella separata, che INNER JOIN con la tabella FTS3 quando è necessario, ma questa è una soluzione molto poco elegante. Non c'è modo semplicemente escludere determinate colonne da indicizzazione?

È stato utile?

Soluzione

Non è poco elegante. SQL è relazionale, si unisce sono una parte naturale della vita. Pensando di essere "poco elegante" è ciò che porta a stereotipo poveri disegni di database.

Hai determinato si hanno due diversi tipi di dati - testo che spesso c'è bisogno di cercare, e BLOB non lo fai. Non c'è assolutamente nulla di sbagliato o poco elegante sulla memorizzazione questi in due diverse tabelle.

Altri suggerimenti

Si può rendere meno di una seccatura con la creazione di una vista del join che è possibile selezionare il sopravvento. È comunque possibile utilizzare PARTITA sulle colonne che hanno avuto origine nella tabella FTS, e non si hanno a che fare che uniscono ogni volta che si desidera query.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top