Maison > base de données > tutoriel mysql > NVL vs COALESCE dans Oracle : quand choisir lequel ?

NVL vs COALESCE dans Oracle : quand choisir lequel ?

Mary-Kate Olsen
Libérer: 2025-01-15 22:08:44
original
757 Les gens l'ont consulté

NVL vs. COALESCE in Oracle: When Should You Choose Which?

Analyse des différences des fonctions NVL et COALESCE dans la base de données Oracle

Les fonctions NVL et COALESCE renvoient des valeurs non nulles, mais il existe des différences subtiles mais importantes entre elles.

Modernisation et standardisation

COALESCE est une fonction plus moderne d'Oracle Database qui est conforme à la norme SQL ANSI-92. En revanche, NVL est une fonction spécifique à Oracle antérieure à la norme.

Synonymité de deux paramètres

NVL et COALESCE se comportent comme des synonymes de deux valeurs. Cependant, cette équivalence ne s’applique qu’à deux paramètres.

Comportement d'évaluation

La principale différence réside dans leur comportement d'évaluation. NVL évalue toujours ses deux arguments, que le premier argument soit vide ou non. COALESCE, en revanche, arrête généralement d'évaluer lorsqu'il rencontre le premier argument non nul. Cette différence peut affecter considérablement les performances dans certains cas.

L'exemple suivant illustre ce contraste de manière frappante. Considérez la requête suivante :

<code class="language-sql">SELECT SUM(val)
FROM (
    SELECT NVL(1, LENGTH(RAWTOHEX(SYS_GUID()))) AS val
    FROM dual
    CONNECT BY level < 10000
)</code>
Copier après la connexion

Ici, NVL calcule deux paramètres pour chaque ligne même si 1 n'est pas vide pour toutes les lignes. Cela entraîne des temps d’exécution des requêtes assez longs.

Utilisez plutôt la requête suivante avec COALESCE :

<code class="language-sql">SELECT SUM(val)
FROM (
    SELECT COALESCE(1, LENGTH(RAWTOHEX(SYS_GUID()))) AS val
    FROM dual
    CONNECT BY level < 10000
)</code>
Copier après la connexion

reconnaîtra que 1 est non nul et évitera de calculer le deuxième argument, réduisant ainsi considérablement le temps d'exécution.

Pour résumer, bien que NVL et COALESCE se ressemblent pour deux valeurs, le comportement d'évaluation optimisé de COALESCE en fait le choix préféré lorsqu'il s'agit de plusieurs valeurs potentiellement nulles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal