Performance top-N, PostgreSQL & Oracle

Les utilisateurs n'aiment ni interrompre leur travail ni regarder le sablier
Répondre
Phil
Administrateur du site
Messages : 263
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Performance top-N, PostgreSQL & Oracle

Message par Phil »

Merci au développeur d'un applicatif compatible avec PostgreSQL & Oracle Database pour sa question.

"Bonjour, avec Oracle Database 19c (test avec la 19.8), je n'ai pas les plans d'exécution et les performances que vous obtenez avec PostgreSQL 13 dans l'article https://pgphil.ovh/migration_performance_12_13_01.php
Cela me semble étrange au moins pour la première requête qui est très simple. Voyez-vous une raison ?"


Réponse :

L'un des meilleurs spécialistes de l'optimiseur statistique Oracle, Jonathan Lewis, m'a donné la réponse qui est valable jusqu'à Oracle 19c.
Pour cette requête,

Code : Tout sélectionner

select idg, perf from lancers order by perf desc fetch first 5 rows only;
Oracle peut obtenir le bon plan mais il faut que perf soit NOT NULL ou faire en sorte que l'index inclut les valeurs nulles en concaténant une constante par exemple.

Pour cette requête,

Code : Tout sélectionner

select idg, taille, perf from lancers join geants using (idg) order by perf desc, taille desc fetch first 5 rows only;
Oracle Database ne dispose pas des tris incrémentaux même en 19c. Ce SGBD ne peut tout simplement pas produire le plan le plus efficace pour l'instant et se comporte en fait comme PostgreSQL 12. L'explication complète de Jonathan se trouve ici : https://jonathanlewis.wordpress.com/202 ... /i-wish-6/
Cdlt. Phil - pgphil.ovh
Répondre