В базите данни индексите обикновено се използват за подобряване на производителността при търсене на нещо, дефинирано във вашата клауза where. Когато обаче става въпрос за филтриране на някакъв текст, напр. използвайки нещо като WHERE TextColumn LIKE '%searchstring%'
тогава търсенията са бавни, тъй като начинът, по който работят обикновените индекси на база данни, са оптимизирани за съвпадения спрямо „цялото съдържание“ на колона, а не само част от нея. По-конкретно търсенето LIKE, което включва заместващи знаци, не може да използва какъвто и да е вид индекс.
Както беше споменато в коментара по-долу, MySQL се нуждае от MATCH () ... AGAINST
синтаксис за търсене в индекс на пълен текст; BTW това варира в зависимост от доставчика на базата данни. В MS SQL можете да използвате CONTAINS
така че имайте това предвид, когато планирате да поддържате и други бази данни.
Индексите на пълен текст работят по-добре за обикновен текст, защото са оптимизирани за този тип колони. Много опростено:Те разделят текста на думи и правят индекс върху думите, а не върху целия текст. Това работи много по-бързо при текстово търсене, когато търсите конкретни думи.