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.
Ma è lentissima questa query!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 )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

ci mette oltre 16 secondi per eseguirla!!! e la devo lanciare tantissime volte per + autori!
Rispondi quotando