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

Oracle Discussion :

[Optimisation] SELECT avant un DELETE (base 10g)


Sujet :

Oracle

  1. #1
    Membre éclairé Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Par défaut [Optimisation] SELECT avant un DELETE (base 10g)
    Bonjour

    j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      CURSOR cur_khis is
      SELECT COUNT(1) nb FROM KHIS WHERE D_DAT = TRUNC(SYSDATE-1) AND E_TYP = 'P';
      rl_khis cur_khis%rowtype;
     
      BEGIN
     
            open cur_khis;
             fetch cur_khis into rl_khis;
              if rl_khis.nb = 1 then
                DELETE FROM KHIS WHERE D_DAT = TRUNC(SYSDATE-1) AND E_TYP = 'P';
            end if;
         close cur_khis;
    Et je me suis posé la question s'il était utile niveau perf de tester l'existence avant de supprimer (dans le cas d'une table très importante en volumétrie) ?

    De par expérience je dis oui, mais un collègue m'a posé la même question et je n'ai su quoi lui répondre (et même lui affirmer que j'avais raison ).

    Quel est votre avis ?

    Merci.

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    déjà, tu ne testes pas l'existence mais tu comptes le nombre de ligne... ensuite c'est inutile évidemment de tester qu'une ligne existe avant de la supprimer

  3. #3
    Membre éclairé Avatar de macben
    Inscrit en
    Mars 2004
    Messages
    546
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2004
    Messages : 546
    Par défaut
    Citation Envoyé par Fred_D
    déjà, tu ne testes pas l'existence mais tu comptes le nombre de ligne...
    Avec un COUNT(1) ? -> réponse : j'ai testé et en effet un count(1) me ramène le nombre de ligne, j'étais persuadé que cela m'aurait ramené 1 !

    Citation Envoyé par Fred_D
    ensuite c'est inutile évidemment de tester qu'une ligne existe avant de la supprimer
    ok... je n'ai plus qu'à manger ma chemise.

    Merci.

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

Discussions similaires

  1. [MySQL] sélection aléatoire dans la base de données
    Par tjoce dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 07/02/2010, 19h49
  2. base 9i et base 10g sur un seul serveur
    Par jchjch dans le forum Administration
    Réponses: 3
    Dernier message: 30/04/2007, 11h05
  3. [MySQL] Optimisation d'un accès aux bases
    Par griese dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/12/2006, 12h39
  4. Réponses: 1
    Dernier message: 27/04/2006, 18h22
  5. Problème d'utilisation select () avant recv sous windows
    Par init dans le forum Développement
    Réponses: 3
    Dernier message: 16/03/2005, 19h36

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