Estou vendo um comportamento estranho com a seguinte consulta T-SQL no SQL Server 2012:
SELECT Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
A execução dessa consulta sozinha me fornece cerca de 1.300 resultados em menos de dois segundos (há um índice de texto completo em Name
)
No entanto, quando mudo a consulta para isso:
SELECT Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
OFFSET 0 rows
FETCH NEXT 10 ROWS ONLY
Demora mais de 20 segundos para me dar 10 resultados.
A consulta a seguir é ainda pior:
SELECT Id
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY Name) AS RowNum, Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"') ) AS RowConstrainedResult
WHERE RowNum >= 0 AND RowNum < 11
ORDER BY RowNum
Leva mais de 1,5 minutos para ser concluído!
Alguma ideia?