Bonjour tout le monde !
Je me tourne vers vous car une requête select me pose problème : elle prend trop de temps à s'exécuter.
Mon modèle relationnel ressemble à ça :
Pour un enregistrement dans la TABLE_1, je peux avoir plusieurs lignes dans TABLE_2 qui référencent cet enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 TABLE_1 { TABLE_1_ID (Primary key) TABLE_2_ID (Foreign key) .... } TABLE_2 { TABLE_2_ID (Primary Key) TABLE_1_ID (Foreign Key) .... }
Mon but, c'est de retrouver tous les enregistrements de la TABLE_2 qui ne sont PAS référencés dans TABLE_1.
J'ai donc essayé ceci :
et aussi, sachant que les sous requêtes sont à éviter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT mes champs FROM TABLE_2 WHERE TABLE_2_ID NOT IN (SELECT TABLE_2_ID FROM TABLE_1)
Ces 2 requêtes renvoit les bons résultats, mais elles ne sont pas très rapides (de l'ordre de 3-4 secondes avec 10k lignes sur TABLE_2 et 100 sur TABLE_1 à peu prés)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT mes champs FROM TABLE_2 INNER JOIN TABLE_1 ON TABLE_1.TABLE_2_ID <> TABLE_2.TABLE_2_ID
Si vous avez une meilleure technique, n'hésitez pas, merci
Partager