在数据库中,当查找where子句中定义的内容时,索引通常用于提高性能.然而,当涉及到过滤某些文本时,例如使用WHERE TextColumn LIKE '%searchstring%'
之类的搜索,则搜索速度会很慢,因为常规数据库索引的工作方式是针对某个列的"全部内容"而不是其中的一部分进行优化的.具体来说,包含通配符的同类搜索不能使用任何类型的索引.
正如在下面的 comments 中提到的,MySQL需要MATCH () ... AGAINST
语法来在全文索引中搜索;顺便说一句,这取决于数据库供应商.在MS SQL中,您可以使用CONTAINS
,所以当您计划支持其他数据库时,请记住这一点.
全文索引更适合于常规文本,因为它们针对这些类型的列进行了优化.非常简单:他们将文本拆分为单词,并对单词而不是整个文本编制索引.在搜索特定单词时,这对于文本搜索来说要快得多.