Mysql
 sql >> Database >  >> RDS >> Mysql

Che cos'è un indice fulltext e quando dovrei usarlo?

Nei database gli indici vengono solitamente utilizzati per migliorare le prestazioni quando si cerca qualcosa di definito nella clausola where. Tuttavia, quando si tratta di filtrare del testo, ad es. usando qualcosa come WHERE TextColumn LIKE '%searchstring%' quindi le ricerche sono lente, perché il modo in cui funzionano gli indici di database regolari è ottimizzato per le corrispondenze rispetto all'"intero contenuto" di una colonna e non solo a una parte di essa. In particolare la ricerca LIKE che include caratteri jolly non può fare uso di alcun tipo di indice.

Come menzionato nel commento qui sotto, MySQL ha bisogno di MATCH () ... AGAINST sintassi per cercare all'interno di un indice fulltext; A proposito, questo varia a seconda del fornitore del database. In MS SQL puoi usare CONTAINS quindi tienilo a mente quando prevedi di supportare anche altri database.

Gli indici fulltext funzionano meglio per il testo normale, perché sono ottimizzati per questo tipo di colonne. Molto semplificato:dividono il testo in parole e creano un indice sulle parole e non sull'intero testo. Funziona molto più velocemente per le ricerche di testo durante la ricerca di parole specifiche.