(not) EXISTS et Fetch first 1 rows only
Bonjour,
Chez un client DB2 V11 for Z/OS, un DBA préconise d'ajouter la clause "fetch first 1 rows only" dans les test d'existence (where exists/not exists)
Je suis très surpris par cette préconisation : dans la mesure où le test d'existence répond par un booléen, et sauf erreur de ma part, arrête la lecture quoi qu'il arrive dès le 1er enregistrement trouvé, quel pourrait être l'intérêt de cette clause ?
precision avec NOT EXISTS
L'explain est ton ami.
reste que certaines "normes" ont été prises il y a plusieurs années (eq plusieurs versions de db2) et il faut savoir argumenter pour le respect (ou pas) de ces "normes" (vu & vécu il y a qques jours).
Db2 est capable d'optimiser les requêtes qui lui sont présentées. Ca ne marche pas toujours; mais la fiabilité de l'optimization est de 99.9999%.
EXISTS a été bien optimisé. Les discussions entre "EXISTS (select * ..." et "EXISTS (SELECT 1 ...." ne sont plus d'actualité.
La lecture de tous les redbooks de la Vxx à la V11 devrait s'imposer.
Perso; moins j'en met dans une requête; mieux ca marche. En respectant le schema de données (eq passer par les index uniques).
Si ca fait plaisir au chef; fait lui plaisir.. Avec des arguments...........
a+
Gaffe, avec "NOT EXISTS" le résultat ne sera pas du tout le même.