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

Requêtes MySQL Discussion :

Optimisation requetes


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 9
    Par défaut Optimisation requetes
    Bonjour,

    J'ai un souci de perfs sur certaines requêtes. Actuellement je fais comme ça :

    1. Table categories
    ------------------------------------------------
    | id | nom_cat | description|
    ------------------------------------------------
    | 18 | maison/jardin/plantes | blablabla |
    ------------------------------------------------
    | 19 | maison/jardin | blablabla |


    2. Table liens
    -------------------------------------------------------------------------------
    | id | url | titre | nom_cat |
    -------------------------------------------------------------------------------
    | 5 | h*tp://www.domaine.net | blobloblo | maison/jardin/plantes |


    Pour cet exemple : pour regrouper tous les enregistrements de la table liens qui font partie de la categorie "maison/jardin" et donc de toutes ses sous catégories (donc "maison/jardin/plantes" inclu), je fais une requête du style :

    select * from liens where nom_cat like '%jardin%'


    Hors vous en conviendrez, c'est pas ce qui s'appelle de l'optimisation. Les requêtes sont extrêment lourdes et j'aurais aimé un moyen de les alléger.
    J'ai pensé mettre un champs "index_id" à la table liens et à la table categorie afin de faire un regroupement sur tous les liens qui ont le même index_id, mais le probleme c'est que dans les resultats dont j'ai besoin il peut y avoir des sites qui sortent pour plusieurs types de catégories, donc je suis un peut coincé. Quelqu'un aurait-il une idée pour rendre les requêtes moins lourdes?

    Merci,
    Stephane

  2. #2
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Bonjour,

    Ta table n'est pas normalisée.
    Mettre dans une seule colonne VARCHAR la catégorie/souscatégorie/sousoucatégorie est une très mauvaise idée, on le voit avec ce problème de performances (un LIKE '%xxx%' n'utilise pas du tout d'index donc ça rame)...

    Il vaut mieux partir sur ce genre de modélisation :

    Lien(id_lien, url)
    Categorie(id_categorie, id_categorie_parente)
    Categorie_lien(id_lien, id_categorie)

    C'est beaucoup plus propre et en plus ça permet de mettre un lien dans plusieurs catégories. Tu trouveras sur ce forum des solutions pour gérer la hiérarchie (savoir quelle est la catégorie ancêtre d'une catégorie, etc.)

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

Discussions similaires

  1. Optimisation requete
    Par mic79 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/04/2005, 16h35
  2. optimisation requetes (besoin de votre avis)
    Par seb92 dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/12/2004, 11h27
  3. [PL/SQL] Optimisation requete SQL
    Par CDRIK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/10/2004, 09h52
  4. [SYBASE] optimisation requete UPDATE
    Par metheorn dans le forum Sybase
    Réponses: 8
    Dernier message: 24/05/2004, 17h01
  5. Optimisation requetes SQL
    Par joel90 dans le forum Administration
    Réponses: 18
    Dernier message: 15/05/2004, 21h45

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