ciao, ho importato tutto il db da access a mysql ed utilizzo una query per aggiornare i quantitativi dei prodotti nelle singole categorie, le categorie sono 2773, ed i prodotti circa 45000.
ora in access la stessa query ci impiega circa 60 secondi mentre in mysql dopo 10 minuti è ancora impiantata alla categoria n° 900 circa...
c'è una spiegazione?
perchè la stessa query su mysql gira così lentamente (fino ad impiantarsi)?
questa è la query:
grazie, fulvio.codice:'azzero i valori di categorie SQL = " UPDATE categorie SET quantita = 0, prezzomin = '0', prezzomax = '0' " Set RS = Conn.Execute(SQL) SQL = " SELECT id_mc, id_sc, id_c FROM categorie WHERE visibile = 'S' " Set RS = Conn.Execute(SQL) Do While Not RS.Eof SQLinf = "" quantita = 0 PrezzoMin = "" PrezzoMax = "" 'contro quanti prodotti ci sono in questa categoria SQLinf = " SELECT COUNT(*) AS Tot FROM prodotti " & _ " WHERE id_mc = "& RS("id_mc") &" AND id_sc = "& RS("id_sc") &" AND id_c = "& RS("id_c") &" AND cancellato = 'N' " Set RSinf = Conn.Execute(SQLinf) quantita = RSinf.Fields("Tot").Value RSinf.Close If quantita > 0 Then 'ordino i prodotti di questa mcategoria per prezzo e prendo il primo valore (prezzomin) SQLinf = " SELECT prezzo FROM prodotti " & _ " WHERE id_mc = "& RS("id_mc") &" AND id_sc = "& RS("id_sc") &" AND id_c = "& RS("id_c") &" AND cancellato = 'N' ORDER BY prezzo ASC " Set RSinf = Conn.Execute(SQLinf) PrezzoMin = Cstr(RSinf("prezzo")) RSinf.Close 'ordino i prodotti di questa mcategoria per prezzo e prendo l' ultimo valore (prezzomax) SQLinf = " SELECT prezzo FROM prodotti " & _ " WHERE id_mc = "& RS("id_mc") &" AND id_sc = "& RS("id_sc") &" AND id_c = "& RS("id_c") &" AND cancellato = 'N' ORDER BY prezzo DESC " Set RSinf = Conn.Execute(SQLinf) PrezzoMax = Cstr(RSinf("prezzo")) RSinf.Close 'aggiorno la categoria SQLagg = " UPDATE categorie SET " & _ " quantita = "& quantita &", prezzomin = '"& PrezzoMin &"', prezzomax = '"& PrezzoMax &"' " & _ " WHERE id_mc = "& RS("id_mc") &" AND id_sc = "& RS("id_sc") &" AND id_c = "& RS("id_c") Set RSagg = Conn.Execute(SQLagg) ContaCat = ContaCat + 1 End If RS.MoveNext Loop

Rispondi quotando