Запрос полнотекстового индекса становится медленным при использовании row_number? - PullRequest
0 голосов
/ 14 декабря 2018

table1 имеет огромные строки, а field1 - текст, поэтому я создаю полнотекстовый индекс field1.

. Я запускаю sql ниже, он очень медленный, а процессор до 100% до конца.

select * from (
    select *, ROW_NUMBER() OVER(Order by [createtime] DESC) AS RowId 
    from table1
    where CONTAINS(field1, 'sometext')
) AS t1
where t1.RowId between 1 and 10

Я удаляю запрос RowId, он становится быстрым, меньше 1 с.

select * from (
    select *, ROW_NUMBER() OVER(Order by [createtime] DESC) AS RowId 
    from table1
    where CONTAINS(field1, 'sometext')
) AS t1

Тогда я думаю, что речь идет об оптимизации SQLServer, я пытаюсьДобавьте zero в RowId поле запроса.

Это быстро!Но почему?

select * from (
    select *, ROW_NUMBER() OVER(Order by [createtime] DESC) AS RowId 
    from table1
    where CONTAINS(field1, 'sometext')
) AS t1
where t1.RowId + 0 between 1 and 10
...