Reefguardian Posté 9 Mars 2006 Posté 9 Mars 2006 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
Thanat Posté 9 Mars 2006 Posté 9 Mars 2006 Ca me paraît difficile d'optimiser la requête ... Par contre je pense que c'est un soucis de base de données et d'organisation des tables. Tu parles de catégories et de sous-catégories ... pourquoi ne pas réorganiser les tables pour prendre en compte cela ? Création d'un table Catégories qui ne contient que les catégories. 1. Table categories ------------------------------------------------ | id | nom_cat | description| ------------------------------------------------ | 19 | maison/jardin | blablabla | Création d'une table sous-catégories avec l'id de la catégorie. 2. Table sous-categories ------------------------------------------------ | id | nom_cat | description| id_cat | ------------------------------------------------ | 18 | maison/jardin/plantes | blablabla | 19 | ------------------------------------------------ Est-ce jouable dans ton cas ? La recherche est-elle libre ?
loban Posté 9 Mars 2006 Posté 9 Mars 2006 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, <{POST_SNAPBACK}> Oui, il serait judicieux d'ajouter index_id dans la table liens, et de créer un index sur cette colonne 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? <{POST_SNAPBACK}> Non, tu peux faire exactement la même chose en utilisant cette requête : select liens.* from liens, categorie where categorie.nom_cat like '%jardin%' and categorie.id = liens.index_id Le résultat sera meilleur car le filtrage est fait sur la (supposée) plus petite des tables.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant