Ciao a tutti,
ho un quesito da porvi... Sto costruendo un db in cui sono presenti delle pubblicazioni e gli autori di esse, divisi in ricercatori e autori esterni.
Le tabelle sn così formate: Pubblicazioni - AutoriPubblicazioni - Ricercatori.
Ed ho scritto questa query per trovare i ricercatori che sono in ultima posizione tra gli autori.
codice:
SELECT count(*) as 'ultimo'
FROM (autoripubblicazioni inner join ricercatori on autoripubblicazioni.idricercatorefk=ricercatori.idricercatore) inner join pubblicazioni on autoripubblicazioni.idpubblicazionefk=pubblicazioni.idpubblicazione
WHERE idricercatorefk IS NOT NULL AND ricercatori.idUOFK=16 AND anno=2007 AND (appendice='N') AND (idpubblicazionefk,posizione) IN
(SELECT idpubblicazionefk, MAX(posizione) as 'test'
FROM autoripubblicazioni
GROUP BY idpubblicazionefk
HAVING test>2 )
Ma è lentissima questa query!
ci mette oltre 16 secondi per eseguirla!!! e la devo lanciare tantissime volte per + autori!
!!
Come mai? cosa sbaglio? Consigli?
PS. Utilizzo MYSQL 5.0 con InnoDB