Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [MySql] Query lentissima...

    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:
    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
    grazie, fulvio.

  2. #2
    Utente di HTML.it L'avatar di 99eros9
    Registrato dal
    Jan 2003
    Messaggi
    2,637
    Esistono più fattori che possono influenzare le prestazioni di mysql, che vanno dalle variabili di sistema all'utilizzo di mysql nelle applicazioni.
    Di sicuro la più importante di tutte è la modalità di definizione dei campi delle tabelle e, quindi, l'utilizzo degli indici, tipi dei campi, tipi di tabelle etc etc.
    Difficile quindi capire il problema solo da una query.
    Tala är silver men tiga är guld!
    Pubblica il tuo curriculum
    Segnala il tuo sito
    Ancl

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.