Ale*_*lex 0 sql t-sql sql-server full-text-search sql-server-2008
当我在VarChar列上的SQL Server 2008数据库中创建索引时到底发生了什么.这显然是一个文本专栏.
是自动全文索引还是创建不同类型的索引?
全文索引与普通索引不同.考虑这两个看似等效的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*树,或类似的算法来快速更发现或拒绝你的对手,并为加入或范围,则服务器可以"走"的时候比较用于有效检查多个值的索引.
无法单独订购全文索引,因为您必须能够像在开头一样快速地在内容中间进行搜索.因此它们要复杂得多.
| 归档时间: |
|
| 查看次数: |
2694 次 |
| 最近记录: |