Bonjour,
Je voudrai comprendre pourquoi on ne peut pas indexer une vue dont la spécification contient des jointures externes.
Quelqu'un peut-il m'éclairer ?
@++
Bonjour,
Je voudrai comprendre pourquoi on ne peut pas indexer une vue dont la spécification contient des jointures externes.
Quelqu'un peut-il m'éclairer ?
@++
Parce que l'alimentation d'un index de vue est fait par différence et non par un recalcul global. Imaginez ce qu'un tel recalcul global couterait dans une vue d'agrégation (principal intérêt des vues indexées) si ce dernier devait refaire le calcul de 100 millions de ligne, si une seule ligne change. Alors qu'en delta, c'est juste ligne.VALUE = ligne.VALUE - DELETED.maColonne + INSERTED.macolonne.
Or toute présence d'un NULL à quelque niveau que ce soit oblige à un recalcul global, car avec un NULL il est possible que nous ne sachions pas à quelle ligne l'affecter notamment en matière d'UPDATE...
Une solution de contournement consiste à faire une vue indexée pour les données INNER et une requête pour les données OUTER et d'assembler le tout avec un UNION ALL.
A +
Merci SQLPro
@++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager