у нас есть таблица с + - 500k строк в базе данных Sql Server 2005, и один из ее столбцов имеет полнотекстовый индекс.
Мы проводили несколько тестов и обнаружили, что SELECT TOP 1 ... WHERE CONTAINS (fullTextColumn, 'anyValue') возвращался более двух минут. Однако тот же выбор, но с ТОП 2 вместо 1, вернется через несколько секунд.
Есть идеи, почему это происходит?
Спасибо!
Редактировать: Еще немного информации о проблеме. В плане запросов TOP 1 Sql использует удаленное сканирование, а в TOP 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)