Explication sur les performances SQL / ROW_NUMBER / COUNT(*)
Bonjour,
J'aimerais mieux comprendre le fonctionnement d'oracle au niveau des performances.
Ma question est simple, j'ai la requête ci-dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
SELECT
*
FROM (
select
a.*,
ROW_NUMBER() OVER (ORDER BY a.ID DESC) rn
from Table a
where
a.STATUS IN('1', '2', '5', '6', '8')
) result
WHERE rn > 0 and rn <= 15 |
Citation:
Cost (%CPU) = 15 (100)
A présent je change juste un petit truc dans ma requête :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
SELECT
count(*)
FROM (
select
a.*,
ROW_NUMBER() OVER (ORDER BY a.ID DESC) rn
from Table a
where
a.STATUS IN('1', '2', '5', '6', '8')
) result
WHERE rn > 0 and rn <= 15 |
Citation:
Cost (%CPU) = 11585 (1)
Quelqu'un pourrait m'expliquer ce que oracle fabrique pour prendre 1000 fois plus de CPU pour un simple count et pour afficher 15 ? :aie:
Merci d'avance pour votre aide :)