begin process at 2012 05 27 05:26:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

Select lent avec Inner Join et Order


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Select lent avec Inner Join et Order

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ée 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 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 INNER JOIN en cascade [ par elfifie ] Voila mon problème :Je dispose de : - 1 table Utilisateur contenant Nom et Adresse - 1 table Achat contenant Nom et Id_Facture - 1 table Facture conte Besoin d'aide avec SELECT [ par dlcqty63j ] Bonjour,j'ai une requête : select PARAM, VALEUR, ID_MESURE  from TABLE_MESURE where PARAM='Courant' OR PARAM='Déplacement'order by PARAMETRE, ID_MESUR SELECT multitable [ par bergasol ] Bonjour, comment faire pour selectionner une donnée dans une de mes table qui s'en refere a une autre.    Ma premiere table "facture" contient une don problème de requete sql avec un delete et un select imbriquer avec un order by [ par flachkiller ] Bonjour, je voudrai savoir comment résoudre se problème : j'ai une requête qui est la suivante : SELECT id_requete, ( SELECT ip FROM machine WHERE 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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,622 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales