|
Page Précédente | |
Auteur | Sujet : [résolu] Besoin d'aide pour écrire une requête SQL compliquée |
Publicité | Posté le 08-11-2006 à 16:46:32 |
rufo Pas me confondre avec Lycos! | si vous avez besoin de plus de précision, y'a qu'à demander |
rufo Pas me confondre avec Lycos! | Bon, j'ai trouvé une requête qui fonctionne mais si vous trouvez une requête plus optimisée (notamment pour dégager les IN qui consomment pas de temps si je me souviens bien), je suis preneur
|
MagicBuzz | mais arrêtez avec vos "IN" à tout bout de champ
|
rufo Pas me confondre avec Lycos! |
|
MagicBuzz | la syntaxe ne change pas d'un poil avec EXISTS.
Message édité par MagicBuzz le 13-11-2006 à 14:58:42 |
rufo Pas me confondre avec Lycos! | Une question : est-ce-que le c.ConfigurationParentID de la première aprtie de ma requête est le même que le c.ConfigurationParentID qui se trouve dans la 2ième partie (la 2ième partie étant celle après le UNION). En d'autres termes, est-ce que l'alias "c" que j'utilise est local à ma sous-requête ou il est commun à toute la requête, y compris la sous-requête se trouvant après le UNION? |
MagicBuzz | il est différent de chaque côté du union.
|
rufo Pas me confondre avec Lycos! | J'ai un soucis, toujours sur la même requête. Quand j'execute cette requête, ça va, ça répond vite (ma BD ne fait que 182 ko)
Message édité par rufo le 14-11-2006 à 18:27:10 |
MagicBuzz | T'ain, tu bosserais pas sous MySQL, je jureraus que tu bosses pour Econocom
|
Publicité | Posté le 14-11-2006 à 19:16:46 |
rufo Pas me confondre avec Lycos! | Voici un topic sur le même sujet : http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
|
rufo Pas me confondre avec Lycos! | Voici la requête indentée et le résultat du EXPLAIN :
Message édité par rufo le 15-11-2006 à 10:45:27 |
MagicBuzz | Ok.
Message cité 1 fois Message édité par MagicBuzz le 15-11-2006 à 11:12:43 |
MagicBuzz | Par contre, le seul souci, c'est que je me rends compte que ma requête n'est pas vraiment plus simple que la tienne. Mise à part pour obtenir la liste des configs les plus récentes, on a la même... J'espère que ça va quand même aider à accélérer tout ça. |
rufo Pas me confondre avec Lycos! | C'est bon, j'ai trouvé une requête qui va bien. Elle est largement encore optimisable mais au moins, elle va vite (pour l'instant)
|
MagicBuzz |
|
rufo Pas me confondre avec Lycos! | En fait, j'ai l'impression que l'interpréteur de requêtes de MySQL effectuait d'abord les LIKE et créait une table temporaire contenant comme tous les champs du SELECT du début de la requête ainsi que tous les champs de la table attributes et ce pour chaque attribut correspondant aux critères des LIKE! |
MagicBuzz | ps : c'est vrai que j'avais pas remarqué un truc... c'est quoi ce DISTINCT de misère ? |
rufo Pas me confondre avec Lycos! |
|
MagicBuzz | nan, cherchepas plus loin, c'est donc distinct sur 25 champs qui fout la merde... ça kill n'importe quel sgbd dès 4 lignes... |
MagicBuzz | ceci dit, t'es sur que t'as des doublons si tu vire le distinct ?
|
rufo Pas me confondre avec Lycos! | J'avais aps vu la requête que tu avais écrite. Je vais tester pour voir si elle va plus vite et surtout, si elle retourne bien le bon résultat (ça peut aider )... En tout cas, merci d'avoir consacré du temps à mon pb
|
rufo Pas me confondre avec Lycos! |
|
rufo Pas me confondre avec Lycos! |
Message édité par rufo le 15-11-2006 à 11:41:05 |
rufo Pas me confondre avec Lycos! | Bon, après qq corrections de syntaxe de ta requête, elle donne bien de même résultat et à première vue, de manière plus rapide
|
MagicBuzz | d'accord pour le coup du distinct. en fait, tu peux avoir plusieurs attributs contenant "drive" par exemple c'est ça ?
Message édité par MagicBuzz le 15-11-2006 à 11:56:12 |
MagicBuzz | en fait, ça donnerait :
|
rufo Pas me confondre avec Lycos! | au final, ça donne :
Message édité par rufo le 15-11-2006 à 12:04:50 |
MagicBuzz |
rufo Pas me confondre avec Lycos! |
|
MagicBuzz | arf, oui, c'est vrai, j'ai oublié que mon cf est un sous-select en fait
|
rufo Pas me confondre avec Lycos! | Après des tests plus poussés, il faut mettre un DISTINCT dans le 1er SELECT sinon, y'a des doublons |
rufo Pas me confondre avec Lycos! | par contre, j'ai finalement utilisé ta dernière version de requête car celle-ci est construite dynamiquement par mon appli et entre autre, on active ou pas la récupération de la dernière version de chaque conf. Or les LIKE, qui sont aussi d'autres paramètres activables ou pas, sont inclus dans la sous-requête qui récupère la dernière version de conf ce qui est génant si l'utilisateur veut activer les LIKE et pas la récupération de la dernière version de conf. Ta dernière requête de prête mieux à ma construction dynamique ... et après test, ça marche nickel. Merci beaucoup pour ton aide. |
MagicBuzz | de rien |
rufo Pas me confondre avec Lycos! | une dernière question : c'est vrai que pour MySQL, mettre un index sur un champ où on utilise LIKE, ça ne sert à rien car LIKE n'utilise pss les index? |
MagicBuzz | vérifie, mais j'abonde plutôt dans ce sens.
|
rufo Pas me confondre avec Lycos! | oui, la recherche d'infos partielles dans des chaînes de caractères est nécessaire. Maintenant, à voir si l'utilisation de MATCH serait mieux? |
rufo Pas me confondre avec Lycos! | qq chose me dit que j'aurais sans doute à nouveau besoin de tes lumières pour l'optimisation de 3 requêtes permettant de comparer de configurations entre elles : trouvers les attributs en +, en - et les attributs de même nom mais de valeur différente. J'ai déjà écrit les requêtes mais j'ai peur qu'avec la monté en charge de la BD, ça ne devienne très lent... |
MagicBuzz | pour ces trucs là, je pense que le mieux, c'est de faire une requête "toute bête" qui ramène l'intégralité des attributs d'une config.
|
MagicBuzz | sinon, le coup du MATCH pour retrouver des mots exacts, je suis pas certain que ce soit une super idée. MATCH (et dérivés) ça sert à faire des moteurs de recherche tapant dans de gros volumes d'infos. dans ton cas, ça me semble peu justifié, et surtout, MATCH peut faire de l'approximation d'orthographe, ce que tu ne veux pas forcément. |
Publicité | Posté le |
Page Précédente |
Sujets relatifs | |
---|---|
Résolu - Effacer des champs dans des tables à partir d'un select | [RESOLU] PHP EXIF et retouche d'image |
aide en c # sur une erreur CS01117 | [resolu] Probleme passage iframe --> include |
Besoin d'une petite requette SQL | [résolu] Prendre un nom de fichier + répertoire en macro pour excel |
Aide En C++ Suite De Conway (Urgent!!!) | [résolu...enfin presq]Choix multiple pour une propriété de type string |
Authentification sans session. [Résolu] | |
Plus de sujets relatifs à : [résolu] Besoin d'aide pour écrire une requête SQL compliquée |