Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Select lent avec Inner Join et Order [ Archives / Problème avec une requête ] (vincentstryckmans)

lundi 11 avril 2005 à 13:34:12 | Select lent avec Inner Join et Order

vincentstryckmans

Bonjour,

Je souhaite trier une table table1 en fonction d'un champ d'une table2.
Ces deux tables ont un champ qui les lient : table1.id_table2 et table2.id.

Voici la requête que j'ai écrit.

select distinct table1.id from table1, table2
inner join table2 on table1.id_table2 = table2.id
order by table2.field_to_sort

Le hic, c'est qu'elle est lente : plus de 7 à 8 secondes alors table1 et table2 comporte chacunes +/- 600 record.
Sans le inner join et l'order by, la requête est exécutée immédiatement.

Pour info, table1.id et table2.id sont des primary keys et il existe un index sur table1.id_table2 et sur table2.field_to_sort

Une petite idée SVP

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans





mardi 12 avril 2005 à 16:08:24 | Re : Select lent avec Inner Join et Order

bidoch78

Membre Club
Essayes plutot :

Si c'est pas génant d'avoir table1.Id et table2.field_to_sort en retour tu peux faire
SELECT distinct table1.id, table2.field_to_sort 
FROM table1 INNER JOIN table2 ON table1.id_table2 = table2.id
ORDER BY table2.field_to_sort

sinon

SELECT distinct QRY.Field1 AS Id
FROM
(SELECT table1.id AS Field1, table2.field_to_sort 
FROM table1 INNER JOIN table2 ON table1.id_table2 = table2.id
ORDER BY table2.field_to_sort) AS QRY

note : tu ne dois pas avoir besoin du DISTINCT si comme tu le dis table1.id est une clé primaire

Bidoch78

mercredi 13 avril 2005 à 07:38:14 | Re : Select lent avec Inner Join et Order

vincentstryckmans

Après une bonne nuit de sommeil, je me suis demandé pourquoi j'ajoutais table2 dans la clause from du select alors que je ne souhaite aucun champ en retour en provenance de la table2.

Bref, j'ai essayé ceci :
select distinct table1.id from table1 inner join table2 on table1.id_table2 = table2.id order by table2.field_to_sort.


Cela marche vachement mieux, je pense qu'il y a encore moyen de faire plus vite

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
Leur liberté, c'est la nôtre. Agissons!
htp://www.pourflorenceethussein.org



Cette discussion est classé dans : select, id, join, table2, table1


Répondre à ce message

Sujets en rapport avec ce message

Requêtes imbriquées. Erreur [ par patatedu65 ] Bonjour,j'aimerai qu'on m'aide à toruver une solution au problème que je vous expose tout de suite.J'ai développé un site en PHP/MySQL. J'ai fait mes Deux références à la même table dans une ligne [ par Polack77 ] Bonjour,   Mon problème, me semble t'il, est relativement simple mais je n'y arrive pas.Shéma simplifié de mes tables avec des données :Table1-------- Selectionner des entrées qui n'existent pas dans une table associée [ par Max207 ] Bonjour,Je fais appel à vous car je suis bloqué actuellement.J'ai 2 tables:Table1:                  Table2:ID                           requête entre deux table -> inner join ou autre? à l'aide... [ par Michococo ] Bonjour,voici en deux mots la situation:j'ai table1 qui pointe deux fois sur table2 avec les champs table1.id_table2_1 et  table1.id_table2_2si je fa Problème pour aborder une requête d'UPDATE en sql sous Access [ par Famas54 ] Bonjour,Je suis en plein dans la conception d'une requête dont je n'ai pas trop idée du résultat en terme de code SQL pour le moment.En somme, je rech Recherche d'un ID maximun sous SQL dans des requètes liées [ par usfoot ] Bonjour à tous,Je débute sous SQL et souhaite créer une requète avec des tables liées qui me donne un seul ID par personne.J'ai des personnes qui sais SELECT rapatriement multiple de données suivant liste id à virgule [ par alphanono ] Désolé pour ce titre foireux ... j'ai essayé de faire court pour un problème que j'ai du mal à exprimer simplement.Je vais prendre un exemple fictif.M Défit pour un pro [ par zazadec ] Question de se compliquer la vie, je dois reprendre un site avec une bdd déjà existante... bref vous avez compris j'ai pas le choix.2 tables T1 et T2 select max [ par Barsy ] BonjourJ'ai un soucis de requete,J'ai deux table de typetable1----tab1_Idtab2_Iddate1date2table2----tab2_Idla clé primaire de table2 est une clé secon Problème de join sur Access [ par Panthouffle ] Bonjour, je dois faire un join entre deux tables, cependant, il n'y a aucun champ comun entre ces deux tables, je dois passer par une table pour compl


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.