Newsgroup: it.comp.www.asp
Titolo: SELECT o inclusione del recordset?

Hello all... sono nuovo per tanti ma fin troppo noto ad alcuni :-)))
Mi trovo di fronte ad un dilemma (piu' che altro una sega mentale! :-)
Per un nuovo sito ho una tabella i cui record restano fissi per 24 ore, in 
numero ed alcuni campi, con alcuni campi che si aggiornano (contatori).
Quando (e se!) il sito andra' a regime su quella tabella dovrei fare migliaia 
di [SELECT * FROM tabella] al giorno e stavo pensando se invece di 
selezionare dal DB mi conveniva una di queste soluzioni:
1.- salvare il recordset su disco e riprenderelo ogni volta
2.- salvare il recordser come array (sto usando JScript) e fare una inclu-
    sione per avere i record a disposizione in un formato primitivo di
    JScript.
Tenendo conto che uno dei due salvataggi lo farei una volta al giorno.
Premesso che ad ogni accesso (al db, al recordset, all'array) devo comunque 
incrementare un contatore associato al record scelto (e quindi aprire il 
database e lavorarci), quale potrebbe essere la soluzione piu' performante, 
sia come carico di lavoro sul server (al momento sono in hosting) che come 
velocita' di esecuzione:
- select dal db
- lettura recordset dal disco
- inclusione dell'array
Buona giornata a tutti!
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

Io sono uno di quelli a cui risulti nuovo, cmq benvenuto :)
Per la tua sega mentale, il problema č che non hai dato abbastanza
informazioni.
Innanzitutto immagino che il tuo DB sia access, perche altrimenti ti dico
che secondo me tra fare una select su una tabella (che fatta molte volte
sfrutta il connection pooling di SQL server, oracle o qualsiasi altro
DBserver decente) e pescare ogni volta un file da disco (quindi zero
pooling), scelgo tutta la vita la select. Certo, magari non la faccio select
* ma prendo solo i campi che mi servono, e magari metto qualche indice, ma
anche senza scelgo comunque la select.
Se invece il tuo DB č access, allora la scelta č difficile.
Cioč, io sceglierei sempre la select, magari appunto cercando di farmi una
tabella che non sia enorme e che non debba essere selezionata tutta ogni
volta, ma in termini di prestazioni non so dirti se convenga accedere ad
access (mi si perdoni l'allitterazione) o pescare il recordset gia bell'e'
pronto su Disco, visto e considerato poi che comunque al db ci devi accedere
per incrementare il contatore, se anche ti "scappa" una select č
probabilmente meglio che dover prendere il recordset da disco, scaricarlo,
aprire la connessione e incrementare il contatore....
Per la storia dell'array poi francamente non mi ispira piů di tanto, anche
perche non so quanti record siano ma non voglio immaginare di dovermi
trovare a navigare in un array JScript con piu di una decina di elementi :)
Ciao
--
Alessandro
UGIdotNET - 
http://www.ugidotnet.org

 aprire la connessione e incrementare il contatore....
Appunto, qui sta il problema, il db devo aprirlo comunque...
Nella migliore delle ipotesi si dovra' trattare di migliaia di accessi al 
giorno, eliminarne mezze di queste migliaia (limitandomi alla sola scrittura) 
potrebbe farmi risparmiare in termini di uso del server... e non sarebbe una 
cattiva idea finche' resto in hosting "normale".
Il mio dubbio nasce dal fatto che da tutti i record devo comunque sceglierne 
uno casualmente, quindi passerei il risultato della query su un array 
(getRows()), ed ecco il motivo per cui pensavo addirittura a salvare ed 
includere un array in JScript.
Intanto ti ringrazio.


Access ha qualche problemuccio con gli accessi multipli, quindi se la query
e' statica e il database cambia poco, o comunque non viene aggiornato tanto
spesso, puoi procedere cosi':
La pagina che mostra i risultati della (o delle) query e' statica
MA
viene ri-generata da uno script (o da un oggetto) ogni volta che cambia il
contenuto del database.
In questo modo la visualizzazione dei risultati e' veloce quanto una pagina
web (non comporta esecuzione da parte del server), ma i dati sono statici
quindi tutte quelle altre cosette come la paginazione, il ricaricamento
della query con il sort cambiato ecc... te le devi dimenticare.
Questo sistema va benissimo se devi pubblicare le statistiche di un database
(conteggi vari) o una classifica. E' assolutamente inutile nel caso di un
forum.
Saluti
Andrea
"Riccardo" <ri.ri...@agora.stm.itALY> ha scritto nel messaggio
news:MPG.17f015d7f...@powernews.libero.it...


 forum.
Si, questa era l'idea, ma la mia domanda era (riveduta e corretta): con 
Access (adesso) e con SQL-Server Microsoft (poi) cos'e' piu' performante e 
meno oneroso per il server: la selezione direttamente dal db ogni volta che 
serve un record, oppure salvare il recordset (scritto una volta ogni 24 ore 
quando aggiorno la tabella) e selezionare casualmente da quello?
Tenendo conto che cmq devo aprire il DB per aggiornare il contatore.
Grazie cmq.


 Tenendo conto che cmq devo aprire il DB per aggiornare il contatore.
A mio parere ti sei risposto da solo: se devi già effettuare la connessione
secondo me puoi tranquillamente fare la tua select...però se arrivi a
migliaia di record al giorno forse passare a sql server e usare una sp
sarebbe meglio

 ha scritto nel messaggio
news:am9aui$3rth9$1...@ID-147253.news.dfncis.de...

Se passi a SQL server non usare le SP, a parte le rogne che causano ogni
volta che si deve accedere ad esse, non sono performanti quanto il caching
di SQL server 7.0 (e versioni successive).
Insomma, tanto vale ripetere quella query migliaia di volte al giorno: dopo
un po' il server smettera' di eseguire le select, si mettera' in cache
quella query e ad ogni richiesta inviera' quella, provvedendo ad aggiornare
la cache ogni volta che la tabella viene modificata.
Quello che ti frega e' la selezione casuale: il file statico non lo puoi
usare a meno di non crearlo in XML e poi nell'XSL includere uno script  che,
tra le altre cose generi X numeri casuali interi compresi tra 0 e N dove N
e' il numero di record da visualizzare, non ripetuti, e ad ogni numero
corrisponde un nodo da visualizzare, pero' se non hai dimestichezza con XML
e XSL devi lasciar perdere questa strada.
Ciau
Andrea