Почему Entity Framework генерирует два предложения "ORDER BY"? - PullRequest
0 голосов
/ 02 октября 2018

Моя таблица:

CREATE TABLE "ADMIN"."TABLETEST" 
(   
    "ID" NUMBER NOT NULL ENABLE, 
    "NOTE" NUMBER
) 

Как я использую свою таблицу с Entity Framework:

var s = entities.TABLETESTs.OrderByDescending(r => r.NOTE).Skip(10).Take(10);

Запрос, сгенерированный следующим образом:

SELECT * 
FROM 
    (SELECT 
         "Extent1"."ID" AS "ID", 
         "Extent1"."NOTE" AS "NOTE"
     FROM 
         (SELECT 
              "Extent1"."ID" AS "ID", 
              "Extent1"."NOTE" AS "NOTE",  
              ROW_NUMBER() OVER (ORDER BY "Extent1"."NOTE" DESC) AS "row_number"
          FROM 
              (SELECT 
                   "TABLETEST"."ID" AS "ID", 
                   "TABLETEST"."NOTE" AS "NOTE"
               FROM 
                   "ADMIN"."TABLETEST" "TABLETEST") "Extent1"
          )  "Extent1"
    WHERE 
        ("Extent1"."row_number" > 10)
    ORDER BY 
        "Extent1"."NOTE" DESC
)
WHERE 
    (ROWNUM <= (10) )

Если выпрочитав этот последний запрос, вы обнаружите, что он содержит два ORDER BY "Extent1"."NOTE" DESC;почему Entity Framework генерирует два предложения "order by", это необходимо?Потому что, если я опущу второй 'order by', мой запрос станет намного быстрее и даст тот же результат, что и для обоих 'order by'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...