Salut J'ai le T tableau suivant:alternative à « où col dans (liste) » pour MySQL
id 1 2 3 4
col a b a c
Je veux faire une sélection qui retourne l'id, col en groupe par (col) nombre ayant (col)> 1
une façon de le faire est
SELECT id,col FROM T
WHERE col IN (SELECT col FROM T GROUP BY(col) HAVING COUNT(col)>1);
le stagiaire de sélection (à droite) a 'rendements et principal (à gauche) retourne 1, a et 3, un
Le problème est que l'instruction where in est extrêmement lente. Dans mon cas réel, les résultats de la sélection interne a beaucoup de «col», quelque chose à propos de 70000 et cela prend des heures.
En ce moment, il est beaucoup plus rapide de faire la sélection interne et la sélection principale obtenant tous les ids et upcs et faire l'intersection localement. MySQL devrait être capable de gérer efficacement ce type de requête. Est-ce que je peux substituer l'où dans une jointure ou quelque chose de plus rapide?
Merci
Merci. Cela a bien fonctionné. J'ai inséré avant de tcol le mot-clé 'as'. Je n'ai même pas d'index sur col, mais ça a marché très vite. – duduklein