Я спостерігаю дивну поведінку з наступним T-SQL запитом у SQL Server 2012:
SELECT Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
Само виконання цього запиту дає мені близько 1300 результатів менше ніж за дві секунди (індекс повного тексту ввімкнено Name
)
Однак коли я змінюю запит на це:
SELECT Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
OFFSET 0 rows
FETCH NEXT 10 ROWS ONLY
На це знадобиться більше 20 секунд, щоб дати мені 10 результатів.
Наступний запит ще гірший:
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
Виконання займає більше 1,5 хвилин!
Будь-які ідеї?
SELECT TOP 10 * .... ORDER BY Name
?