Quoting Guido Brugnara <gdo@xxxxxxxxx>: > Ho quindi utilizzato due tabelle di appoggio "recordset" e > "recordset_rows" dove nella prima ci sono i dati del singolo recordset > persistente mentre in recordset_rows salvo le PK con la relativa posizione. > > Recuperando le PK solo a zone evito di metterci dei secondi > interminabili quando ho tabelle grandi (dell'ordine delle centinaia di > migliaia o addirittura di minuti con tabelle di milioni di righe) ed il > "rovescio della medaglia" è accettabile se confrontato con i benefici > (tempi di pochissimi secondi alla prima pagina; pochissimi decimi di > secondo per le successive). > > Delle prove con una tabella "limite" di 1.000.000 di record ho ottenuto > che il count(*) richiede circa 3 secondi, che sommati ai circa 15" per > copiare il lotto di 1000 record sono ancora tempi accettabili, > considerato che la navigazione dei 999 record adiacenti successivi > richiederà solo una frazione di secondo. > Un lotto di 100 record richiede comunque 14" e quindi con tabelle molto > grandi conviene tenere lotti di dimensioni di quell'ordine di grandezza. > Forse riesci a migliorare ancora un poco le performances usando per i recordset delle temporary tables. Queste hanno due vantaggi: sono ottimizzate per usare in prima battuta la RAM (quindi dovrebbero avere tempi di caricamento minori delle tabelle vere), e sono separate per sessione (quindi anche se hai molti utenti contemporanei, non stai rallentando le query sulla tabella recordset_rows perché ogni utente ha la sua). Ovviamente, più RAM hai e meglio gira il tutto. Se la tua applicazione usa effettivamente una sessione per ogni utente, non hai da fare alcun lavoro aggiuntivo; se invece lavori via web, ti serve qualcosa per tenere attive le sessioni tra una richiesta e l'altra dell'utente (e naturalmente devi poi ricollegare l'utente alla sessione giusta). Credo che per quest'ultimo problema possa esistere già qualcosa di pronto; forse si può adattare un poco SQLRelay[*] per fargli fare quel che serve. HTH, Ant9000 [*] http://sqlrelay.sourceforge.net/ ---------------------------------------------------------------- Net Wise webmail system - http://www.netwise.it This message was sent using IMP, the Internet Messaging Program. -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx