Salve sto avendo qualche problema ad effettuare una query su mysql...

la mia tabella ha dei campi che chiameremo X, Y, Z, oltre al consueto campo ID


devo trovare le terne X, Y, Z nella tabella per tutte le X che compaiono più di 20 volte

ho usato una query del tipo:
codice:
select X, Y, Z 
from tabella 
where X in 
     (select X 
      from annunci 
      group by X 
      having count(distinct id) >20);
considerato che per ogni record c'è un id differente.

La query funziona, ma su 1750 records ci mette piu' di un minuto per eseguirla, il che mi sembra davvero troppo.

A questo punto mi chiedo innanzitutto se è normale che ci metta cosi' tanto (considerato che le X che compaiono piu' di 20 volte sono solo 2, e che la query suddetta restituisce circa 60 records). E in secondo luogo chiedo consiglio riguardo un modo alternativo per eseguire questa query..