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

Adaptive Server Enterprise Sybase Discussion :

[ASE 12.5.1] Performances sur SELECT et DELETE


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 11
    Points
    11
    Par défaut [ASE 12.5.1] Performances sur SELECT et DELETE
    Bonjour,

    J'ai une proc.stockée qui traite une table sur laquelle je souhaite supprimer des enregistrements si ils existent. Les index sont OK.

    J'ai donc tenté un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM tb WHERE Champ1=X AND Champ2=Y
    Le problème, c'est si les lignes concernées n'existent pas dans la table, autrement dit un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) FROM tb WHERE Champ1=X AND Champ2=Y
    renvoie 0.

    Dans ce cas là, le DELETE prend 3 fois plus de temps à s'executer que de tester si les lignes existent dans un IF.

    Autrement dit, dans le cas ou des lignes existent, il sera plus rapide de faire un DELETE FROM direct . Dans le cas où les lignes n'existent pas, il sera plus rapide de faire un IF pour tester si les lignes existent, et comme ce n'est pas le cas, le temps passé sera juste celui du SELECT.

    Voyez-vous une explication technique ? Et que me conseillez-vous sachant que les 2 cas ont environ autant de chances de se produire (lignes déjà présentes / lignes absentes).

    Merci pour vos avis

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Hello,
    Cela me parait tout a fait normale que le DELETE sois plus long étant donné que tu supprimes des valeurs (suppression dans la table + mise à jour de l'index)
    Donc je pense que le meilleur compromis reste:


    IF EXISTS (SELECT COUNT(1) FROM tb WHERE Champ1=X AND Champ2=Y)
    DELETE FROM tb WHERE Champ1=X AND Champ2=Y
    go

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Tu peux aussi t'aider de la commande:
    set showplan on -- Affiche le plan d'exécution de la requête
    set showplan , noexec on -- n'exécute pas la requête


  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Points : 78
    Points
    78
    Par défaut
    Vous pouvez en plus du plan d'exécution regarder la consommation en i/o.

    Avec l'option :

    set statistic io on
    -- Requêtes
    set statistic io off
    go

    Le but étant de réduire également la consommation en io.

Discussions similaires

  1. [9.3] Mauvaises performances sur SELECT
    Par marsup077 dans le forum Administration
    Réponses: 4
    Dernier message: 26/03/2015, 14h26
  2. Réponses: 39
    Dernier message: 21/12/2011, 20h01
  3. [ASE 12.5.1] Performances sur SELECT et DELETE
    Par zayro dans le forum Sybase
    Réponses: 3
    Dernier message: 30/06/2006, 22h53
  4. question sur SELECT ...WHERE...IN
    Par danseur dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2004, 15h23
  5. [Crystal] Performance sur grosses base de données
    Par Nico118 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 14/11/2003, 15h27

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