[PLUTO-help] doppia query su mysql

ste emmeelle a eubagil.it
Mer 27 Dic 2006 11:05:49 CET


Salve a tutti. 
Sono un neofita dei database ed ho una query che utilizzo in mysql che mi da 
molto da fare perchè risulta di una lentezza clamorosa anche se quello che fa 
è abbastanza semplice. Probabilmente mi sfugge qualcosa dell'algoritmo di 
calcolo che viene utilizzato internamente e sbaglio a impostare il problema, 
ma sono un novizio autodidatta e non capisco dove sbaglio. Qualcuno riesce a 
darmi lumi ? Mi accontento anche di un input per una ricerca in google, ma ad 
oggi non so a cosa attaccarmi

Io ho le seguenti tabelle in un programma che tratta di persone appartenenti a 
diverse aziende
aziende: tabella formata dal campo "id" e dal campo "nome" della azienda
esponenti: tabella formata dal campo "id" e dal campo "nome" dell'esponente 
aziende2esponenti: tabella formata da due campi "idAzi" e idEsp". Il fatto di 
avere in questa tabella la riga  (idAzi=12, idEsp = 13) significa che 
l'esponente con id = 13 appartiene alla azienda con id=12.
Se eseguo la query
select idEsp from aziende2esponenti where idAzi=1;
ottengo una query velocissima che mi restituisce 5 valori (tutti gli esponenti 
appartenent alla azienda con id 1)

Se metto i 5 valori in una query del tipo
select idAzi from aziende2esponeti where idEsp=...
ottengo 5 query velocissime (tutte le aziende cui apartengono i 5 esponenti 
appartenenti alla azienda con id 1)

Se monto il tutto in una unica query:
select idAzi from aziende2sponenti where idEsp in (select idEsp from 
aziende2esponenti where idAzi=1)
ottengo una cosa di una lentezza clamorosa.
La cosa non migliora di tanto se invece di un "select in " utilizzo un inner 
join. Probabilmente nel mio database c'è anche un non ottimale uso degli 
indici, ma il fatto che eseguendo a mano le 5 query io ottenga dei tempi 
clamorosamente minori mi fa credere che il problema sia più generale.

Cosa mi sfugge ??

thank 
  ste



More information about the pluto-help mailing list