Salve lista.
Ritorno su un’applicazione di cui avevo già parlato tempo fa per
chiedere aiuto su altri aspetti.
Tanto per capire un po’ cos’è 'sta roba: ho un elenco di circa 20000
elementi gestiti da degli operatori (una decina); per semplicità le
caratteristiche che l’operatore modifica sono salvate nella tabella
dell’elemento, quindi la tabella degli elementi è una cosa del genere:
tabella objects (quella degli elementi in questione):
|id|user_id|nomeoggetto|caratteristica1|caratt2|caratt3|…|carattn|
con legame 1 a molti tra la tabella users e objects.
Devo visualizzare delle statistiche di lavoro e in una delle quali devo
mostrare quanti oggetti ha gestito ogni operatore e divisi oper
caratteristica, quindi ho fatto una tabella del genere:
|--------------| oggetti |
|nome_operatore|caratt1|caratt2|caratt3|…|carattn|totale|
|operatore1 | 10 | 23 | 131 |…| 3422 | 5335 |
|operatore2 | 345 | 76 | 678 |…| 4321 | 6742 |
…
La costruisco facendo nella vista una cosa del genere:
<% for user in @user %>
(sì, i campi sono quasi tutti booleani, o se non lo sono comunque mi
serve la quantità degli oggetti con quella caratteristica)
Prima al posto del count direttamente sulla tabella facevo così:
<% car1 = @objects.map{|c| c if c.caratt1 == true c.user.id ==
user.id}.compact.length %>
ecc.
in cui @objects era definito nel controller così: @objects =
Object.find(:all)
Tra i due sistemi il primo mi genera la pagina in circa 8 secondi,
mentre i secondo dai 18 ai 20.
C’è un sistema più veloce e leggero per fare questa estrazione? E’ un
po’ una seccatura trovarsi con la macchina che fa da serverino che
rallenta di brutto ogni volta che il capogruppo va a vedersi le
statistiche…
Grazie e a presto