W bazach danych indeksy są zwykle używane w celu zwiększenia wydajności podczas szukania czegoś zdefiniowanego w klauzuli where. Jednak jeśli chodzi o filtrowanie jakiegoś tekstu, np. używając czegoś takiego jak WHERE TextColumn LIKE '%searchstring%'
wtedy wyszukiwania są powolne, ponieważ sposób działania zwykłych indeksów bazy danych jest zoptymalizowany pod kątem dopasowań do „całej zawartości” kolumny, a nie tylko jej części. W szczególności wyszukiwanie LIKE, które zawiera symbole wieloznaczne, nie może korzystać z żadnego indeksu.
Jak wspomniano w poniższym komentarzu, MySQL potrzebuje MATCH () ... AGAINST
składnia do wyszukiwania w indeksie pełnotekstowym; BTW różni się to w zależności od dostawcy bazy danych. W MS SQL możesz użyć CONTAINS
więc miej to na uwadze, gdy planujesz obsługiwać również inne bazy danych.
Indeksy pełnotekstowe działają lepiej dla zwykłego tekstu, ponieważ są zoptymalizowane dla tego typu kolumn. Bardzo uproszczone:dzielą tekst na słowa i tworzą indeks na słowach, a nie na całym tekście. Działa to znacznie szybciej w przypadku wyszukiwania tekstowego podczas wyszukiwania określonych słów.