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

PHP & Base de données Discussion :

Optimiser une requête avec des tableaux PHP ?


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut Optimiser une requête avec des tableaux PHP ?
    Bonjour,

    Je voudrais optimiser une requête SQL en utilisant des tableaux PHP.


    Chaque membre est lié à des intérêts.

    Pour chaque association membre/intérêt il existe une valeur en fonction de l'appréciation de l'intérêt par le membre.

    Cette note permet de déterminer les intérêts pour lesquels le membre est le plus concerné.

    Je voudrais réaliser une requête qui permet d'afficher les articles d'un intérêt en prenant compte la valeur de l'association afin d'afficher les articles les plus pertinent en priorité pour un membre.

    Afin d'optimiser le requête, ces valeurs ne changeant que très rarement, je voudrais les récupérer depuis un tableau PHP plutôt que par le moteur SQL afin d'avoir la requête la plus optimisée possible.

    Est-il possible d'intégrer un tableau [CodeInteret][Valeur] dans la requête ?

    La requête avec la chaîne "12,19,52,36" qui correspond aux intérêts du membre (chargé en SESSION par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CodeArticle
    FROM article
    WHERE CodeInteret IN (12, 19, 52, 36)
    Alors je pourrais également exécuter autant de requête que le membre possède d’intérêt, mais le nombre d'intérêt n'étant pas limité, je pense que ça peut vite devenir une usine à gaz.

    De plus, je voudrais éviter d'avoir à charger 500 articles via SQL pour afficher la première page qui en comporte uniquement 25.

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    Citation Envoyé par Khleo Voir le message
    Est-il possible d'intégrer un tableau [CodeInteret][Valeur] dans la requête ?
    oui, par exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tableau=array(12, 19, 52, 36);
    $requete = "SELECT CodeArticle
    FROM article
    WHERE CodeInteret IN ";
    $codes = implode(", ", $tableau);
    $requete.=$codes;
    Citation Envoyé par Khleo Voir le message
    je voudrais éviter d'avoir à charger 500 articles via SQL pour afficher la première page qui en comporte uniquement 25
    tu peux utiliser limit
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    oui, par exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $tableau=array(12, 19, 52, 36);
    $requete = "SELECT CodeArticle
    FROM article
    WHERE CodeInteret IN ";
    $codes = implode(", ", $tableau);
    $requete.=$codes;
    Oui mais il s'agit d'un tableau à 1 colonne, je voudrais pouvoir ajouter un tableau de 2 colonnes pour pouvoir associer une valeur à un intérêt : CodeInteret => ValeurDeInteret.

    Citation Envoyé par Doksuri Voir le message
    tu peux utiliser limit
    Oui mais si l'article qui sera au final considéré comme le plus pertinent se trouve en 495 position ?

    En utilisant un limit 25, j'aurai uniquement l'article le plus pertinent des 25 derniers articles publiés alors que je voudrais les articles les plus pertinents disponibles en base de données.

    Merci

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Khleo Voir le message
    Afin d'optimiser le requête, ces valeurs ne changeant que très rarement, je voudrais les récupérer depuis un tableau PHP plutôt que par le moteur SQL afin d'avoir la requête la plus optimisée possible.
    La requête la plus optimisée possible se trouvera du côté de MySql et non PHP.
    Donnes la structure de tes tables gérant toutes ces informations.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    La requête la plus optimisée possible se trouvera du côté de MySql et non PHP.
    Donnes la structure de tes tables gérant toutes ces informations.
    Je voudrais éviter de lui demander d'aller chercher des valeurs que je peux lui donner via la requête.

Discussions similaires

  1. Critères avec opérateurs dans une requête avec des champs calculés
    Par lmollard dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/05/2008, 18h53
  2. Réponses: 6
    Dernier message: 24/06/2007, 01h13
  3. Charger une popup avec des données PHP
    Par philou029 dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2007, 16h45
  4. Afficher le résultat d'une requête avec des côtes
    Par sweet_hell dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/10/2006, 10h32
  5. [SQL] Requête dans une requête...avec des INNER JOIN!
    Par PedroBD dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 06/04/2006, 08h26

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