vincentstryckmans
Messages postés228Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention25 octobre 2006
-
11 avril 2005 à 13:34
vincentstryckmans
Messages postés228Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention25 octobre 2006
-
13 avril 2005 à 07:38
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.
bidoch78
Messages postés67Date d'inscriptionmercredi 27 février 2002StatutMembreDernière intervention 2 décembre 2005 12 avril 2005 à 16:08
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
vincentstryckmans
Messages postés228Date d'inscriptionlundi 5 avril 2004StatutMembreDernière intervention25 octobre 2006 13 avril 2005 à 07:38
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.