VarChar上的SQL Server索引(50) - 这是全文吗?或者是什么?

Ale*_*lex 0 sql t-sql sql-server full-text-search sql-server-2008

当我在VarChar列上的SQL Server 2008数据库中创建索引时到底发生了什么.这显然是一个文本专栏.

是自动全文索引还是创建不同类型的索引?

Joe*_*orn 6

全文索引与普通索引不同.考虑这两个看似等效的where子句:

WHERE [mycolumn] LIKE '%' + @MyValue + '%'

WHERE CONTAINS([mycolumn], @MyValue)
Run Code Online (Sandbox Code Playgroud)

前者不会使用任何索引,即使是您在问题中引用的正常索引.它不被认为是sargable.后者专门告诉服务器使用全文索引.

另一方面,这将使用普通索引,但忽略任何可用的全文索引:

WHERE [mycolumn] LIKE @MyValue + '%'
Run Code Online (Sandbox Code Playgroud)

普通索引工作,因为他们是有序的.当你去查找索引值,您可以使用二进制搜索,B*树,或类似的算法来快速更发现或拒绝你的对手,并为加入或范围,则服务器可以"走"的时候比较用于有效检查多个值的索引.

无法单独订购全文索引,因为您必须能够像在开头一样快速地在内容中间进行搜索.因此它们要复杂得多.