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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Cost (%CPU) = 15 (100)
A présent je change juste un petit truc dans ma requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 ?

Merci d'avance pour votre aide