Newsgroup: it.comp.www.asp
Titolo: Problema con ASP e DB

ho un serio problema...
Ho un Database marketing in locale in ASP, ho un DB in access con 51.000
nomi di aziende, formato da 10 tabelle con 100 campi in tutto
le mie pagine ASP sono semplicissime e le query altrettanto semplici, ma il
problema maggiore è...
quando clicco un nominativo estratto da una query ci vogliono dai 15 ai 30
secondi per avere il dato.
Finche avevo 200 nomi era velocissimo ma con 51.000 è rallentato al massimo
secondo voi devo cambiare DB? andare su SQLSERVER o su MYSQL perche sia piu
veloce??
Perchè pur avendo le stesse tsbelle stessi campi stesse query rallenta
cosi??
Grazie 1000 per la risposta
C.J.

 cosi??
51000 record non non sono tanti... in senso generale... pero' bisogna vedere
le relazioni tra le tabelle, gli indici e cosi' via... prova ad eseguire la
query direttamente ne db e vedi quali sono i tempi di elaborazione... se
sono lunghi vuol dire che ci sono dei problemi di performance tuning...
in ogni caso se hai bisogno di prestazioni dovresti passare a MS SQL
Server... :)
-- 
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Gli iperlink sovvertono la gerarchia.

 cosi??
La risposta può essere nella struttura di Access.
Se hai una query che interroga una o più tabelle con 1000 record, Access
trova la sua strada più rapida per eseguire la query, ma se nel frattempo la
tabella è cresciuta e contiene 50'000 record la strada utilizzata per la
risoluzione della query che prima funzionava perfettamente per 1000 record
adesso può non essere più performante. Pertanto compattando il db, Access
ricalcola e rigenera la tabella delle performance e solo a questo momento si
accorge che la tabella è composta da 50000 record e quindi ricalcola una
nuova strada per la risoluzione della query questa volta ottimizata per
50'000 record.
-- 
ITHost (your host company)
Technical Manager
C. Paparelli (MCSE,MCSD,MCDBA)
http://www.ithost.ch

 
http://www.ithost.ch
Da quello che posso capire mi consigliate di compatare il DB che ho fatto
e adesso è di 30 MB
Le query sono semplici esempio della piu banale..
Nominativo con join su 3 tabelle collegate tramite ID e sono Provincia,
Codice SIC e Tipologia
sotto però ho controllato diventa un po piu complessina, perche ho un
include che mi fa un'altra query di Attività fatte legate all'ID del nome
in totale ho controllato e sono 2 query con 5 tabelle in tutto, cavolo
forse avete ragione voi, 
come posso fare delle query piu performanti? creando una unica pagina seza
dei file Include che mi fanno delle query collegate??
Grazie 
C.J.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 dei file Include che mi fanno delle query collegate??
Non è l'include che rallenta la query ma il fatto che la query non è
ottimizzata, ricordati comunque che la query di una query è molto più veloce
di una query con subquery o di una query complessa, questo per il semplice
fatto che Access memorizza in cache i risultati delle query più utilizzate.


 
http://www.ithost.ch
non ho capito bene....
tu mi dici che se io faccio una query dentro la mia pagina ASP e prendo i
dati fatti da una Query dentro Access diventa piu veloce????
ho capito bene??
Se Si ma non dovrebbe essere invece il contrario? cioč rallentare
l'estrazione dati?


 l'estrazione dati?
Non sempre, dipende da come Access gestisce la cache delle query inoltre se
utilizzi Access XP con Jet 4.0 SP 6 l'esecuzione delle query è notevolmente
migliorata.


 Perchč pur avendo le stesse tsbelle stessi campi stesse query
rallenta
1) Prova a indicizzare i campi su cui imposti delle condizioni WHERE
2) esegui la query salvata su Access piuttosto che costruirti il
recordset da codice VbScript
(se la query contiene parametri glieli puoi passare anche da codice
con ADO)
3) usa i cursori adOpenForwardOnly (oppure adOpenStatic) e
adLockReadOnly
4) alternativamente ai recordset puoi usare GetRows che dicono sia un
po' piů veloce
5) dai un'occhiata ad 
adopenstatic.com
 per gli articoli sul
performance tuning delle query
6) se ti serve il recordset paginato usa i cursori lato server
adUseServer
A me una query su 70mila record sul mio Celeron 400 (256 Ram) impiega
circa 3 secondi con Access e 0.8 con MySQL ma MySQL va bene solo
strutture dati sempliciotte non potendo usare le chiavi esterne.
Ciao,
Lo