Veo un comportamiento extraño con la siguiente consulta T-SQL en SQL Server 2012:
SELECT Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
Ejecutar esta consulta solo me da unos 1.300 resultados en menos de dos segundos (hay un índice de texto completo Name
)
Sin embargo, cuando cambio la consulta a esto:
SELECT Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
OFFSET 0 rows
FETCH NEXT 10 ROWS ONLY
Me lleva más de 20 segundos darme 10 resultados.
La siguiente consulta es aún peor:
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
¡Tarda más de 1.5 minutos en completarse!
¿Algunas ideas?
SELECT TOP 10 * .... ORDER BY Name
?