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

Langage SQL Discussion :

Requêtes et performances.


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut Requêtes et performances.
    Salut,

    J'aimerais optimiser une application rendue lente par la quantité de données qu'elle contient. Au départ, la DB en elle même avait quelques petits problèmes de manque d'index mais de ce côté,, c'est résolu. J'aimerais maintenant savoir, outre les select * les types de requêtes qui peuvent nuire aux performances.

    Merci.

    ps : je ne sais pas trop si ça importe, je pense que non mais mon sgdb est postgres.

  2. #2
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    Les bonnes pratiques : (non exhaustif)
    - select * : oui car dans bien des cas tu recupere beaucoup trop de champs de plus dangereux a maintenir.

    Problemes SQL
    - where substr(zone1, ...) : passe aps par un index (mais a verifier sur ta base) (toute operation sur un zone dans un critere where..)
    - where zone1 not in (select ... ) : sql n'aime pas les not exists ou not in
    - where zon1 = 'aaa' or zone8 = 'zzz' : la il ne sait pas par quel index passe soit zon1 soit zone8 (suivant le volume des données )
    - manque d'index ou index mal definie par raport aux ordre sql executes
    - runstats manquant si ta base le necessite
    - ...

    Problemes de conception
    - modele physique mal definie (cela implique souvent un des deux problemes suivants)
    - trop de sous select ou de jointures peut nuire
    - trop de champ dans une table

    Bonne chance...

  3. #3
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Ca donne déjà pas mal d'idée... Je ne pense pas que la db soit mal conçue (enfi, j'espère) mais l'application qui l'utilise comportait plusieurs centaines de requêtes "select *". Et autre chose dont je doute mais sans certitudes, des jointures faite par des trucs genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT a.*, B.* from table1 a, table2 b where a.id  in select id from table3;

  4. #4
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    Personnelement a la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT a.*, B.* FROM table1 a, table2 b WHERE a.id  IN SELECT id FROM table3;
    Je prefere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT a.les zones utiles, 
               b.la meme chose 
     FROM table1 a, table2 b 
    WHERE a.id = b.id 
        and exists  (SELECT '0' FROM table3 c where c.id = a.id and ...) ;
    J'espere que l'absence du critere de jointure entre A et B est un oubli
    normalement ce genre d'ordre avec les bons indexes ne doit pas poser de problemes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [11g] [Requête] Problème performance
    Par GyZmoO dans le forum SQL
    Réponses: 5
    Dernier message: 21/11/2014, 14h01
  2. Ecriture requête et performance
    Par chouffe59 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 09/02/2011, 13h45
  3. [DB2]requête et performence
    Par Tan dans le forum DB2
    Réponses: 8
    Dernier message: 18/03/2008, 13h43
  4. Sous requête et performance. Un cas d'école ?
    Par asaintleger dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/11/2006, 11h04
  5. [Access] Optimisation performance requête - Index
    Par fdraven dans le forum Access
    Réponses: 11
    Dernier message: 12/08/2005, 14h30

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