V databázích se indexy obvykle používají ke zvýšení výkonu při hledání něčeho definovaného ve vaší klauzuli where. Nicméně pokud jde o filtrování nějakého textu, např. pomocí něčeho jako WHERE TextColumn LIKE '%searchstring%'
pak je vyhledávání pomalé, protože způsob, jakým fungují běžné databázové indexy, je optimalizován pro shodu s „celým obsahem“ sloupce, nikoli pouze s jeho částí. Konkrétně vyhledávání LIKE, které obsahuje zástupné znaky, nemůže používat žádný druh indexu.
Jak je uvedeno v komentáři níže, MySQL potřebuje MATCH () ... AGAINST
syntaxe pro vyhledávání v rámci fulltextového indexu; BTW to se liší v závislosti na prodejci databáze. V MS SQL můžete použít CONTAINS
mějte to na paměti, když plánujete podporovat i jiné databáze.
Fulltextové indexy fungují lépe pro běžný text, protože jsou optimalizovány pro tento typ sloupců. Velmi zjednodušeně:Rozdělí text na slova a vytvoří rejstřík přes slova, nikoli celý text. To funguje mnohem rychleji pro textové vyhledávání při hledání konkrétních slov.