Время выполнения запроса удваивается, когда я выбираю верхние N строк - PullRequest
0 голосов
/ 24 сентября 2019

Это мой упрощенный запрос:

select 
    field1, field2, rn 
from 
    (select 
         field1, 
         field2, 
         row_number() over(order by idx desc) as rn 
     from   
         MyTable
     where 
         <where-condition>) as ttt 
where 
    rn between 0 and 10

Этот запрос имеет время выполнения 6 секунд.Странный факт заключается в том, что если я выполняю только внутреннее выделение, время выполнения составляет 3 секунды: поэтому выбор первых 10 строк занимает половину времени выполнения, и это довольно странно.

Почему у меня такое странное поведение?Я ожидал, что внешний выбор будет самой быстрой операцией, вместо этого он займет 50% времени выполнения

Редактировать:

Вот сравнение между планами выполнения: верхний план - это выполнениеплан без внешнего выбора, план внизу изображения - это план выполнения, включающий внешний выбор

compared execution plans. Down: with outer select, Up: without outer select

...