récupérer les lignes de la première colonne en fonction des données communes sur la deuxième colonne

Dites que j'ai entré comme ceci:

1st column ---------2nd column 23 ---------------------- 0080 23 ---------------------- 0010 23 ---------------------- 0080 25 ---------------------- 0010 25 ---------------------- 0010 34 ---------------------- 0080 27 ---------------------- 0010 27 ---------------------- 0080 

Je veux récupérer toutes les lignes de la 1ère colonne qui contient datatables 0080 et 0010 dans la 2ème colonne. le résultat sera comme ceci:

 1st column--------- 2nd column 23 ---------------------- 0080 23 ---------------------- 0010 23 ---------------------- 0080 27 ---------------------- 0010 27 ---------------------- 0080 

Du résultat nous pouvons voir que la 1ère colonne n'inclut pas 25 puisque 25 a seulement 0010 dans la 2ème colonne, et même pour 34 qui a seulement 0080 dans la 2ème colonne.

J'ai essayé d'utiliser une requête nestede, mais elle devient très lente car ma table est très grande (elle contient environ 30 000 lignes et plus). Je suis à la search d'une technique intelligente qui est plus rapide pour une grande table de données.

 select * from your_table where col1 in ( select col1 from your_table where col2 in ('0080', '0010') group by col1 having count(distinct col2) = 2 ) 
 select first from t where second in ('0080', '0010') group by first having count(distinct second) = 2 
 SELECT t.Col1,t.Col2 FROM dbo.YourTable t JOIN( SELECT Col1, MAX(CASE WHEN Col2 = '0010' THEN 1 ELSE 0 END) Has0010, MAX(CASE WHEN Col2 = '0080' THEN 1 ELSE 0 END) Has0080 FROM dbo.YourTable GROUP BY Col1 )FilterTbl f ON t.Col1 = f.Col1 AND f.Has0010 = 1 AND f.Has0080 = 1