sonic85
16-09-2010, 14:45
Ciao a tutti,
ho un quesito da porvi... Sto costruendo un db con interfaccia web con php e Mysql, in cui sono presenti delle pubblicazioni su riviste 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.
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!!!
:eek: :eek: :eek:
e la devo lanciare tantissime volte per tutti autori che sono circa 200!!!
:muro: :muro: :muro:
Come mai? cosa sbaglio? Consigli? Suggerimenti?:help:
:help: :help: :help:
PS. Utilizzo MYSQL 5.0 con InnoDB
ho un quesito da porvi... Sto costruendo un db con interfaccia web con php e Mysql, in cui sono presenti delle pubblicazioni su riviste 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.
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!!!
:eek: :eek: :eek:
e la devo lanciare tantissime volte per tutti autori che sono circa 200!!!
:muro: :muro: :muro:
Come mai? cosa sbaglio? Consigli? Suggerimenti?:help:
:help: :help: :help:
PS. Utilizzo MYSQL 5.0 con InnoDB