54 messaggi dal 12 novembre 2002
Ciao a tutti, in una pagina del mio gestionale, ho dovuto creare la paginazione usando il LIMIT sql ma la pagina risulta lentissima da caricare e la maggior parte delle volte scade il tempo di caricamento. Non riesco a capire il motivo di questo rallentamento, le connessioni sono già state ottimizzate ma senza alcun risultato. A questo punto volevo tentare il caching delle connessioni al DB ma non so neanche da che parte incominciare. Qualcuno di voi mi saprebbe spiegare cosa devo fare?

Grazie
2.907 messaggi dal 15 maggio 2001
Contributi
Hai verificato, per prima cosa, che il problema si presenti solo nel caso dell'uso del Limit ??

Cioè, se crei una connessione e una query semplici, i tempi migliorano sensibilmente ??

Magari c'è qualcosa che va in Loop

controlla bene prima
54 messaggi dal 12 novembre 2002
MMMMM..in effetti ho tolto il limit e il caricamento rimane lentissimo.

A questo punto credo che non dipenda dalla connessione ma dallo script che mi crea la paginazione. L'ho creato da zero quindi può darsi che non sia ottimizzato perfettamente.

Ti posto il codice così gli dai un'occhiata anche tu se vuoi:

Premetto che ho uno script inizio pagina che conta i record totali presenti nel tabella e la variabile si chiama "rectot", mentre "recPage" contiene un numero che imposto personalmente che identifica il numero di record da visualizzare per ogni pagina.

<%
' Inizio Script paginazione
if request("x") = "" or request("x") = "1" then

xlimit = int("0")

else

x = int(request("x"))-1

xlimit = x*recPage

end if

'Fine Script paginazione

Set rs = Server.CreateObject("ADODB.Recordset")

sql = "SELECT * FROM fornitori order by fornitore LIMIT "& xlimit &", "& recPage &""

ecc
ecc
%>

Pagina:&nbsp;
<%

Page = recTot/recPage

If Cdbl(Page) <> Int(Page) Then

PageTot = Int(Page) + 1

end if

varPage = PageTot-1

Page = PageTot-varPage

if request("x") = "" or int(request("x")) = 1 then

response.write "<b>"&page&"</b> | "

else

response.write "<a href=""sezione_Progetti.asp?x="&Page&""">"&page&"</a> | "

end if

Do until Page = PageTot

Page = Page+1

if int(request("x")) = Page then

response.write "<b>"&page&"</b> | "

else

response.write "<a href=""sezione_Progetti.asp?x="&Page&""">"&page&"</a> | "

end if

Loop

%>
54 messaggi dal 12 novembre 2002
Ho fatto una semplice modifica, al posto di "Do until Page = PageTot " ho sostituito con "Do while Page = PageTot " e ora sembra che carichi la pagina velocemente. Secondo te potrebbe essere stato quello il motivo o è solo ASP che mi prende in giro?

Do until Page = PageTot

Page = Page+1

if int(request("x")) = Page then

response.write ""&page&" | "

else

response.write "<a href=""sezione_Progetti.asp?x="&Page&""">"&page&"</a> | "

end if

Loop

Modificato da colde il 26 novembre 2002 11.44 -
2.907 messaggi dal 15 maggio 2001
Contributi
bè quasi certamente il problema stava proprio lì

a volte basta poco per mandare tutto in loop
54 messaggi dal 12 novembre 2002
Azz..è da due settimane che cerco di risolvere il problema ma senza risultati. Grazie alla tua frase "Magari c'è qualcosa che va in Loop" mi è venuto in mente di controllare il loop della paginazione e come per magia lo script ha funzionato. Spero che sia veramente quello il motivo. Grazie dell'aiuto, sei stato utilissimo.
106 messaggi dal 11 novembre 2002
Allora non go letto tutto quanto tra risposte e domande, ma posso dirti che la laentezza è dovuta principalmente alla mancanza di indici e chiavi all'interno delle tabelle che utilizzi e di conseguenza la query deve spulciare tutti i dat per trovare quelli che gli interessano...Si capisce che più dati ci sono e più pesante diventa il reperimento dei dati...
Se aggiungi gli indici le prestazioni si miglioreranno del 70-80%.

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.