2013-08-12 9 views
0

Quelle serait la meilleure façon d'implémenter une telle vue afin que la requête ne prenne pas trop de temps.Optimisation SQL, requête imbriquée

select * from table 
where ID in (
SELECT ID FROM table 
GROUP BY ID 
HAVING COUNT(ID) > 1 
) 

Notre serveur devra exécuter cette opération toutes les 10 minutes. J'ai pensé à l'indexation ID mais je ne savais pas si ce serait la bonne façon de procéder.

+1

Utilisez-vous MySQL ou SQL Server? Vous avez marqué les deux. Je suppose que c'est le premier puisque c'est là que les problèmes de performance semblent être ... –

+1

En règle générale, 'JOIN' fonctionne mieux comme il est expliqué ci-dessous. Je voulais ajouter que vous avez * définitivement * besoin d'un index sur 'ID'. –

+0

J'utilise MySQL. – codeBarer

Répondre

2
select t.* from table t 
join 
(
SELECT ID FROM table 
GROUP BY ID 
HAVING COUNT(ID) > 1 
) a 
on a.id=t.id 
+0

Merci à tous! Avec notre DBA parti et moi laissé en charge, vous êtes tous venus à la rescousse! – codeBarer