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 :

question optimisation


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut question optimisation
    Bonjour

    Une question m'a traversé l'esprit hier... Admettons que j'aie une table, dont un des champs soit un bit 0 ou 1. Si je veux mettre tous ces bits à zéro d'un coup, est-ce qu'une de ces deux requêtes est avantageuse sur l'autre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE table SET bit=0
    UPDATE table SET bit=0 WHERE bit=1
    C'est un problème purement conceptuel, mais merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Je n'ai pas la réponse à ta question, mais fais attention que avec UPDATE table SET bit=0 WHERE bit=1 Les NULL resteront null contrairement à l'autre solution. Tu n'as pas précisé si ton champ était nullable ou pas.
    A+
    Soazig

  3. #3
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par soazig
    Bonjour,
    Je n'ai pas la réponse à ta question, mais fais attention que avec UPDATE table SET bit=0 WHERE bit=1 Les NULL resteront null contrairement à l'autre solution. Tu n'as pas précisé si ton champ était nullable ou pas.
    A+
    Soazig
    Merci
    C'était un "cas d'école" mais je suppose qu'il est non nullable. C'est une question sur la performance uniquement, sur les mécanismes internes mis en oeuvre usuellement.

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Par défaut
    Moi j'aurais tendance à dire que la seconde solution est plus performante (avec le WHERE) parce que on risque de restreindre le nombre de lignes à mettre à jour, mais c'est sans doute une approche un peu naïve ...

    Pourquoi avoir choisi un champ de type BIT ? Cela a-t-il une importance quelconque dans la démonstration ?

  5. #5
    Membre Expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Par défaut
    Citation Envoyé par Luc Orient
    Moi j'aurais tendance à dire que la seconde solution est plus performante (avec le WHERE) parce que on va restreindre le nombre de lignes à mettre à jour, mais c'est sans doute une approche un peu naïve ...
    Le truc que j'aurais à répondre à ça, c'est est-ce que c'est plus avantageux de faire un test sur un bit avant de ne rien faire, ou alors faire une affectation inconditionnelle ?
    Est-ce que le where apporte réellement quelque chose en terme de performance, quand tous les champs ont la même valeur après l'opération ?

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Par défaut
    Citation Envoyé par Eusebius
    Le truc que j'aurais à répondre à ça, c'est est-ce que c'est plus avantageux de faire un test sur un bit avant de ne rien faire, ou alors faire une affectation inconditionnelle ?
    Est-ce que le where apporte réellement quelque chose en terme de performance, quand tous les champs ont la même valeur après l'opération ?
    Si la table a 1 000 000 de lignes et que 999 999 de ces lignes ont le champ BIT dèjà à 0, il y a peut être une différence non ?

Discussions similaires

  1. Question optimisation requête
    Par dngaya dans le forum SQL
    Réponses: 6
    Dernier message: 09/09/2010, 19h49
  2. Linq - question optimisation requête
    Par boby62423 dans le forum Linq
    Réponses: 2
    Dernier message: 07/04/2009, 19h19
  3. Question optimisation de code PHP/HTML
    Par heavenvibes dans le forum Langage
    Réponses: 7
    Dernier message: 14/08/2008, 12h57
  4. Question :optimisation du rendu Ogre3d
    Par Mytech dans le forum Ogre
    Réponses: 8
    Dernier message: 21/06/2008, 23h23
  5. une question optimisation
    Par rassmug dans le forum DB2
    Réponses: 2
    Dernier message: 20/07/2007, 10h07

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