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

ORM PHP Discussion :

Perf: WHERE IN () ou WHERE condition and Where condition


Sujet :

ORM PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Points : 27
    Points
    27
    Par défaut Perf: WHERE IN () ou WHERE condition and Where condition
    Hello,

    J'ai une petite question concernant les perf sur une requête.
    J'ai dans ma une table produits, et une table commande.
    Si je veux récupérer les commandes qui ont n'ont pas commandé le produit 1, 4, 10, je peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $q = Doctrine_Query::create()
                        ->select()
                        ->from('Commande')
        ->where('produit_id NOT IN ?', array($liste_produits));
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $q = Doctrine_Query::create()
                        ->select()
                        ->from('Commande')
        ->where('produit_id != ?', 1)
        ->andWhere('produit_id != ?', 4)
        ->andWhere('produit_id != ?', 10)
     
    ;

    Sur quelques commandes et quelques produits, la différence doit être minime. Par contre, sur des millions de commandes et une condition avec 50 produits, quelle est la meilleure solution?

    Merci
    Bolbo

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Pour moi le meilleur reste une requête PDO directement sans passer par DQL.

    Doctrine permet de le faire et tu évites toutes la construction du DQL.

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Pour moi le meilleur reste une requête PDO directement sans passer par DQL.
    Il post dans la rubrique ORM ! il demande juste une info pure SQL, en pdo ou doctrine le probleme est le même !

    quel est le plus performant en SQL
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE id=x AND id=y AND id=z
    -------------------
    suis pas assez specialiste, mais je penche pour le IN
    mais la réponse doit être différente en fonction de la bd (oracle..mysql), en interne on a peut-être la même requete ?

    edit: oui @MaitrePylos, PDO est plus rapide qu'un orm !
    $moi= ( !== ) ? : ;

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Il post dans la rubrique ORM ! il demande juste une info pure SQL, en pdo ou doctrine le probleme est le même !
    Pourtant, a moins que je ne sache plus lire, mais on parle bien de perf

    Citation Envoyé par Laurent91300
    J'ai une petite question concernant les perf sur une requête.

    Et en Doctrine dans son cas, c'est bien le PDO le plus rapide.

    Et non en PDO et Doctrine, ce n'est franchement pas la même chose!

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 17
    Points : 27
    Points
    27
    Par défaut
    Hello,
    Merci pour vos réponses. J'ai peut être mal formulé ma question, désolé. Je voulais bien parler de rapidité d'exécution d'une requête en utilisant Doctrine.

    Laurent
    Bolbo

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    xw

Discussions similaires

  1. Afiiché les conditions avec WHERE, and et or ?
    Par gastoncs dans le forum Langage SQL
    Réponses: 1
    Dernier message: 01/08/2009, 16h34
  2. [MySQL] Erreur mysql type 0, 0, 0, 0) avec requête JOIN <-> ON + AND + AND -> WHERE
    Par gailup dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/08/2008, 22h36
  3. Aide rédaction des conditions dans where clause
    Par Pahcixam dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/08/2007, 13h01
  4. Nombre de condition dans WHERE
    Par freud dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/07/2007, 12h14
  5. Condition dans WHERE
    Par portu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/02/2007, 11h31

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