Newsgroup: it.comp.www.asp
Titolo: [?] Tempo esaurito

Salve ragazzi ho un problema:
Ho una pagina ASP che genera un numero notevole di query per aggiornare un
database online, ma il tempo di esecuzione è tale che genera l'errore di IE
"Tempo esaurito per l'operazione"; avevo già settato in precedenza
Server.ScriptTimeOut=2000.
Grazie PK

database online,
<ZAP>
Io comincerei a pensare ad un database piu' efficiente o a spostare
le query in Stored Procedure. In questo modo sgravi l'ASP da una serie
di operazioni che non gli competono.
Davide

 Server.ScriptTimeOut=2000.
Suggerimento: pubblica le query (magari cambiando i nomi dei campi se lo
ritieni opportuno) su it.comp.software.database e cerca aiuto per farle
ottimizzare.
Ciao
Nettuno

 >database online,


 > Ho una pagina ASP che genera un numero notevole di query per aggiornare
un


Procedure (sono autodidatta ed alle prime armi).
Per Database piu' efficiente si intende di solito un db che ha una
sua intelligenza dentro e non un banale file su disco. Db di
questo genere sono Oracle, SQL Server, Postgres, MySQL et similia.
Questo tipo di database hanno la capacita' di essere programmati,
cioe' di poter memorizzare dei mini-programmi (manco tanto mini)
che operano sui propri dati in maniera molto piu' efficiente 
proprio perche' sono DENTRO al database (e non fuori). Questo
tipo di programmi sono detti "Stored Procedure".
Dato che devi lavorare con Access la soluzione non e' pero'
implementabile. A questo punto vedi se riesci ad "ottimizzare"
le tue Query utilizzando ad uopo gli indici e riducendo al
minimo le outer join.
Davide

 SQL = SQL1 & SQL2 & SQL3
cioe':
SELECT COUNT(*) AS conteggio FROM TBL_Componente WHERE descrizione Not Like
'E*' AND descrizione Not Like '-*' AND descrizione Not Like '?ND*' AND
cdf='RCA' AND g='PPP'
Che tradotto in italiano significa:
Caro database: conta e dimmi quanti sono i record nella tabella
TBL_Componente il cui campo descrizione non comincia per E, per -, dove la
seconda e terza lettera non sono uguali a ND, e il campo cdf e' uguale a RCA
e il campo g e' uguale a PPP.
Trova il modo di cavare dai... pardon, bisogna trovare il modo di eliminare
le istruzioni Like: anche cosi' mirate senza indici il povero ADO impiega
una quaresima a cercare.
Un modo puo' essere:
aggiungi un campo di tipo int che puo' contenere solo due valori: 0 e 1, poi
con una query su access, se il campo teste' creato si chiama "conta" fai
cosi':
Update TBL_Componente Set conta=1
poi
Update TBL_Componente Set conta=0 WHERE descrizione Not Like 'E*' AND
descrizione Not Like '-*' AND descrizione Not Like '?ND*' AND cdf='RCA' AND
g='PPP'
upload del file mdb sul sito e poi la query sul sito diventa:
SELECT COUNT(*) AS conteggio FROM TBL_Componente WHERE conta = 0
infinitamente piu' veloce.
...e ricordati di tenere il campo "conta" sempre aggiornato.
Questo se la stringa che c'e' su SQL2 non e' dinamica, viceversa se quei
"not like" ogni volta riportano stringhe diverse la cosa si complica un po'.
Ciao
Nettuno
PS: se si complica tanto forse ti conviene considerare DB piu' avanzati come
SQL7 che ha delle ottime funzioni di ricerca "full text" in grado di
accelerare enormemente anche le ricerche con Like.