[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