IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Performance de SQL dynamique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut Performance de SQL dynamique
    Bonjour,

    Est ce que le SQL dynamique permet d'ameliorer l performance? et comment?

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Ceci répond-t-il a votre besoin ?

    (Pensez à développer vos besoins/demandes.)

    Cordialement,
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    A requête équivalente non.
    Mal codé il détruit les performances en plus d'être source d'injection SQL.

    Le SQL dynamique permet d'exécuter une requête construite dynamiquement à partir d'une chaîne (une concaténation de chaînes) de caractères comme fonctionnent les language client (php, java...)
    Voici un exemple où l'approche sql dynamique permet un gain de performance comparée à l'approche sql statique :
    Making a genric search sql Query

  4. #4
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    skuatamad; le document lié est trés long de façon que j ai pas pu trouvé mon besoin:

    aussi, j ai pas compris ce que t'as ecris:
    A requête équivalente non.
    Mal codé il détruit les performances en plus d'être source d'injection SQL.

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    En PL/SQL, avant Oracle 10g le SQL dynamique était toujours moins performant que le SQL statique. Suite aux divers optimisations apportées au PL/SQL à partir d’Oracle 10g il n’y plus une différence notable entre les requêtes dynamiques et statiques. Néanmoins utiliser du SQL dynamique à la place du SQL statique dans PL/SQL est une erreur au moins pour le fait qu’il détruit le mécanisme des dépendances.

  6. #6
    Membre très actif
    Inscrit en
    Novembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 139
    Par défaut
    merci mnitu,

    mais j ai pas compris:
    Néanmoins utiliser du SQL dynamique à la place du SQL statique dans PL/SQL est une erreur au moins pour le fait qu’il détruit le mécanisme des dépendances.

  7. #7
    Membre Expert

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Par défaut
    Citation Envoyé par mnitu Voir le message
    En PL/SQL, avant Oracle 10g le SQL dynamique était toujours moins performant que le SQL statique. Suite aux divers optimisations apportées au PL/SQL à partir d’Oracle 10g il n’y plus une différence notable entre les requêtes dynamiques et statiques. Néanmoins utiliser du SQL dynamique à la place du SQL statique dans PL/SQL est une erreur au moins pour le fait qu’il détruit le mécanisme des dépendances.
    Le SQL Statique (PL/SQL) a l'avantage d'utiliser automatiquement les "bind variables". Il est fait ainsi. Un genre "d'auto binding" est introduit dans le moteur PL/SQL statique si bien que tout ce que vous mettez comme variable, en dur ou pas, elle sera "re-bindée" (Désolé pour les termes en anglais). Vous avez donc l'énorme avantage de soulager la mémoire (library cache du shared pool) sans déployer d'effort spécifique à ce sujet. Par contre, lorsque vous utilisez du SQL Dynamique dans du PL/SQL (procédure), vous devez vous même veiller à la bonne utilisation des "bind-variables". Ce qui ôte déjà un sérieux avantage par rapport au SQL statique.

    De plus, qui dit SQL dynamique dit peut-être une faille dans la sécurité à cause du SQL injection. D’une manière générale, moi je conseille de:

    1. N’utiliser le SQL dynamique que lorsque le SQL statique n’est pas possible
    2. Lorsque vous utilisez le SQL dynamique veillez à bien utiliser les variables de liaison (ouf j’ai fini par utiliser le terme en français)
    3. Lorsque vous utilisez le SQL dynamique faites attention au SQL injection (utilisation des concaténations et absence de variables de liaison)
    4. Lorsque vous utilisez le SQL dynamique pensez à tracer le texte du code SQL généré avant son utilisation. Il vous sera très facile de débugger les différentes erreurs obtenues lors de l’exécution et non lors de la compilation


    cursor sharing and bind variable

Discussions similaires

  1. Prob SQL dynamique
    Par anthony8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/09/2004, 09h53
  2. Appel de function en SQL Dynamique
    Par dkd dans le forum Oracle
    Réponses: 22
    Dernier message: 28/09/2004, 18h01
  3. SQL dynamique : pb de syntaxe
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/08/2004, 16h50
  4. SQL dynamique
    Par Etienne1 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/08/2004, 10h18
  5. SQL Dynamique - Materialized view
    Par Simeans2004 dans le forum SQL
    Réponses: 15
    Dernier message: 10/06/2004, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo