I databaser bruges indekser normalt til at forbedre ydeevnen, når man leder efter noget, der er defineret i din where-klausul. Men når det kommer til at filtrere noget tekst, f.eks. ved at bruge noget som WHERE TextColumn LIKE '%searchstring%'
så er søgninger langsomme, fordi den måde, almindelige databaseindekser fungerer på, er optimeret til match mod 'hele indholdet' i en kolonne og ikke kun en del af den. Specifikt kan LIKE-søgningen, som inkluderer jokertegn, ikke gøre brug af nogen form for indeks.
Som nævnt i kommentaren nedenfor har MySQL brug for MATCH () ... AGAINST
syntaks for at søge i et fuldtekstindeks; BTW dette varierer afhængigt af databaseleverandøren. I MS SQL kan du bruge CONTAINS
så husk dette, når du også planlægger at understøtte andre databaser.
Fuldtekstindekser fungerer bedre til almindelig tekst, fordi de er optimeret til denne type kolonner. Meget forenklet:De deler teksten op i ord og laver et indeks over ordene og ikke hele teksten. Dette virker meget hurtigere for tekstsøgninger, når du leder efter specifikke ord.