Добавить комментарий

row_number()

Спасибо, за хорошее исследование.
Попробуйте прогнать тест с таким запросом СТЕ.

WITH ordered_orders AS (
  SELECT O.order_id,
         row_number() OVER(
           ORDER BY O.product_code ASC,
                    O.customer_code ASC,
                    O.order_type ASC,
                    O.qty_date ASC
         ) AS row_num
    FROM orders O INNER JOIN customers C ON O.customer_code = C.customer_code
    WHERE C.country_code = 'IT'
)
SELECT O.*, ordered.row_num
 
  FROM ordered_orders ordered
  join oreders O on o.order_id = ordered.order_id
  WHERE row_num BETWEEN 400001 AND 500000

На наших данных и структуре в таком виде запрос выполнялся значительно быстрее.