我们在SQL Server 2005数据库中有一个表的行数为+-500k,其中一列有全文索引。
我们做了一些测试,发现选择前1个…其中contains(fullttextcolumn,'anyvalue')的返回时间超过两分钟。但是相同的选择,但是用前2而不是1在几秒钟内返回。
知道为什么会这样吗?
谢谢!
编辑:有关问题的更多信息。在前1个查询计划SQL中使用远程扫描,而在前2个查询计划中使用索引查找。很奇怪。
编辑2:这两个都是来自SQL的执行计划:
前1名
StmtText
--------------------------------------------------------------------------------------------------------------------------------------------------
|--Top(TOP EXPRESSION:((1)))
|--Nested Loops(Left Semi Join, WHERE:([ECRReload].[dbo].[TECR_PRODUTO_COMPLETO_VENDAVEIS].[idProduto] = [Full-text Search Engine].[KEY]))
|--Index Scan(OBJECT:([ECRReload].[dbo].[TECR_PRODUTO_COMPLETO_VENDAVEIS].[ix_tecr_produto_completo_vendaveis01]))
|--Remote Scan(OBJECT:(CONTAINS))
前2名
StmtText
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Top(TOP EXPRESSION:((2)))
|--Nested Loops(Inner Join, OUTER REFERENCES:([Full-text Search Engine].[KEY]))
|--Remote Scan(OBJECT:(CONTAINS))
|--Index Seek(OBJECT:([ECRReload].[dbo].[TECR_PRODUTO_COMPLETO_VENDAVEIS].[ix_tecr_produto_completo_vendaveis01]), SEEK:([ECRReload].[dbo].[TECR_PRODUTO_COMPLETO_VENDAVEIS].[idProduto]=[Full-text Search Engine].[KEY]) ORDERED FORWARD)