Bonjour à tous !
J'ai actuellement un problème concernant un JOIN pour une de mes requêtes SQL. J'ai les tables minimalistes suivantes :
VILLE (id, cp, nom)
UTILISATEUR (id, nom, id_ville)
BINÔME (id, id_util1, id_util2)
Je souhaiterais sélectionner les binômes d'un code postal donné en faisant remonter le nom de la ville également.
Avec cette requête, j’obtiens ce que je veux :
Mais MySql mouline pendant 8 secondes et m'affiche un résultat de 4 lignes en (selon lui) un peu plus de 5 secondes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT B.id, V.nom FROM BINÔME as B INNER JOIN UTILISATEUR as U ON (U.id = B.id_util1 OR U.id = B.id_util2) INNER JOIN VILLE as V ON V.id = U.id_ville WHERE V.cp = '01290'
Avec un EXPLAIN devant j'obtiens :
type possible_keys key key_len ref rows extra
UTILISATEUR : Index PRIMARY,id_ville id_ville 5 NULL 100000 Using Index
BINÔME : ALL id_util1,id_util2 NULL NULL NULL 50000 Range checked for each record
VILLE : eq_ref PRIMARY PRIMARY 4 db.UTILISATEUR.id_ville 1 Using where
Peut-être est-ce mes index qui ne vont pas ? Je ne comprend pas tout mais le range checked for each record sonne faux... non ?
Si quelqu'un à déjà eu ce cas de figure je suis tout ouïe !
Partager