33 messaggi dal 29 aprile 2001
Troppo Lento ...
Salve a tutti,

Questa volta ho il seguente problema.

Riesco ad analizzare gli 8000 records del mio database e ad eseguire gli update necessari ma ...

l'operazione è decisamente troppo lunga... (10 min come minimo)

Esiste un modo per abbreviare molto il tempo di esecuzione ?

a me basterebbe anche "visualizzare" e modificare in automatico durante lo screening dei dati solo pochi record alla volta CANCELLANDO nella memoria temporanea e ovunque sia necessario, per velocizzare il tutto, gli ALTRI già visualizzati ovv. conservandoli nel db ma non so proprio come fare.



Se qualcuno a capito cosa chiedo ... e mi da delle dritte
gli sarò molto grato !!!


PS:Un altro fatto che vorrei capire e credo dipenda anche questo dal problema che voglio risolvere e ignoro è che tutte le volte che interrompo l'operazione di analisi degli 8000 records nonostante
la pagina asp preveda il close e il nothing dell'oggetto e della connessione e nonostante chiuda il webserver tutto il sistema e' rallentato a dismisura e mi tocca riavviare per ristabilire le condizioni di velocità normali.

Grazie ancora per la Vostra attenzione e il Vostro aiuto

tom
1.605 messaggi dal 06 settembre 2002
dipende da cosa devi modificare
magari si riesce a fare con un'uaca query
comunque se non lo fai già ti conviene utilizzare una connessione ole-db
http://www.aspitalia.com/liste/usag/script.asp?ID=36

FORZA LA MAGICA ROMA

FORZA LA MAGICA ROMA
24 messaggi dal 27 settembre 2001
Posta il codice della query e il tipo di database che usi
Ciao

Flybaba
porco9@hotmail.com

Flybaba
porco9@hotmail.com
33 messaggi dal 29 aprile 2001
OK sarò + preciso :)
Ti riassumo qualke passo dell'elaborazione altrimenti è troppo lungo

Server.ScriptTimeOut=10000 'Questo tempo lungo mi è necessario proprio perche' c mette tanto a risolvere lo script nel suo complesso.

'apro la connessione al db

set objConn = server.CreateObject("ADODB.Connection")
objConn.ConnectionString="DRIVER={MySQL (*.sql)};"&_
"DBQ=Server.MapPath(miodb.sql)"
objConn.ConnectionString = "DSN=miodsn"
objConn.Open

'Devo confrontare valori immessi da form
primovalore=request.form("primoimmesso") ecc... fino
al ennevalore

'converto primo e gli altri ad un valore stringa

primo = Cstr(primovalore)
secondo = Cstr(secondovalore)
terzo = Cstr(terzovalore)
quarto = Cstr(quartovalore)
quinto = Cstr(quintovalore)
sesto = Cstr(sestovalore)

'creo oggetto di confronto

Set objRS = Server.CreateObject("ADODB.Recordset")
SQL= "SELECT * FROM datipercontrollo "
objRS.Open SQL, objConn
Do while Not objRS.EOF

'valori nel db con 8000 records.

primoB=objRS("primo")
secondoB=objRS("secondo")
terzoB=objRS("terzo")
quartoB=objRS("quarto")
quintoB=objRS("quinto")
sestoB=objRS("sesto")


'questi vengono modificati con Update in base all'esito del confronto
A=objRS("A")
B=objRS("B")
C=objRS("C")
D=objRS("D")
E=objRS("E")
F=objRS("F")

somma=A+B+C+D+E+F ' e somma varia di conseguenza

'esempio di confronto per il primo valore

If primo=objRS("primo") or primo=objRS("secondo") or primo=objRS("terzo") or primo=objRS("quarto") or primo=objRS("quinto") or primo=objRS("sesto") then



primoses = Cstr(primo)
secondoses = Cstr(secondo)
terzoses = Cstr(terzo)
quartoses = Cstr(quarto)
quintoses = Cstr(quinto)
sestoses = Cstr(sesto)


myvoto=1
mysql= "UPDATE datipercontrollo SET A=" & myvoto & " WHERE primo=" & primoses
mysql = mysql & " OR secondo=" & primoses
mysql = mysql & " OR terzo=" & primoses
mysql = mysql & " OR quarto=" & primoses
mysql = mysql & " OR quinto=" & primoses
mysql = mysql & " OR sesto=" & primoses
Set objRS1=ObjConn.Execute(mysql)
%>


<table bgcolor="#808000" align="center">
<tr>

<td><%= objRS("primo") %> </td>
<td><%= objRS("secondo") %> </td>
<td><%= objRS("terzo") %></td>
<td><%= objRS("quarto")%></td>
<td><%= objRS("quinto") %></td>
<td><%= objRS("sesto") %></td>
<td bgcolor="#FF0000"><font size="+1" color="#FFFFFF"><%= primo %> </font></td>

<td>Totale punti primovalore= <%= objRS("A") %></td>
</tr>
</table><br>

'Ricomincio daccapo ...

objRS.MoveNext
loop

'chiudo tutto..

objRS.Close
Set objRS = nothing

objConn.Close
Set objConn = nothing

PS:Nonostante l'estrema lentezza mi torna tutto ...fa il suo lavoro fino alla fine solo c mette un eternità e se mi dici che 8000 records non sono poi troppi dimmi davvero come posso velocizzare il tutto

Grazie ankora
tom

PS:Per l'interruzione e' strano che continui ad elaborare visto che non mi limito a chiudere con lo stop del browser ma anche con il chiudi del webserver cio' stoppo pure il servizio che controlla l'asp ma continua ad andare lento ...come se effettivamente continuasse a elaborare ... Alla luce di queste nuove che mi dici ?

NB:Ho già fatto su consigli di altri membri le seguenti modifiche ma ... SENZA ALCUN RISULTATO :( :

1)"... puoi usare primoB, secondoB, ecc... il server lavora di meno "
GIA' FATTO :(

2)"...Set objRS1=ObjConn.Execute(mysql)
qui aggiungi set objRs1=nothing "..
GIA' FATTO :(

3) <td><%= objRS("primo") %> </td>
<td><%= objRS("secondo") %> </td>
<td><%= objRS("terzo") %></td>
<td><%= objRS("quarto")%></td>
<td><%= objRS("quinto") %></td>
<td><%= objRS("sesto") %></td>

"...anche qui usa primoB, ecc..."
GIA' FATTO :(

4)"...se puoi usa tutti response.write, anche per le tabelle"
GIA' FATTO :(

STO IMPAZZENDO !!!!!!!!!!!!!!!!!!!! :)

Grazie per l'aiuto che vorrete darmi !!!

Ciao
Tom
24 messaggi dal 27 settembre 2001
ho visto velecemente il post (non ho molto tempo oggi) e mi scuso se dò una risposta affrettata.

Non sono un esperto di MySql ma mi pare che è un fulmine nelle select e una printz nelle insert e update. Tu fai circa 8000 update e questo potrebbe essere il motivo e qui non ci sarebbe nulla da fare. Prova a chiedere in un newsgroup di mysql per questo.

Cmq nel tuo caso io proverei a dare una istruzione per ogni singolo campo eliminando gli OR. Qui vedrei: se va più lento è la probabilmente connessione, se va più veloce era il motore di Mysql che non ce la faceva.
Se va enormente più lento tutte e due i casi.
Lo so è una prova da smanettone ma non mi viene in mente altro al momento.
Ciao ed in bocca al lupo!


Flybaba
porco9@hotmail.com

Flybaba
porco9@hotmail.com

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.