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 :

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)
  ....
}
Pour un enregistrement dans la TABLE_1, je peux avoir plusieurs lignes dans TABLE_2 qui référencent cet enregistrement.

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 :

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)
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
INNER JOIN TABLE_1 ON TABLE_1.TABLE_2_ID <> TABLE_2.TABLE_2_ID
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)

Si vous avez une meilleure technique, n'hésitez pas, merci