[ruby-it] Alleggerire estrazione dati da tabella
Daneel Olivaw
daneel.olivaw.r a gmail.com
Lun 5 Ott 2009 14:13:42 CEST
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 %>
<td><%= user.login %></td>
<% car1 = Objects.count(:conditions => "caratt1= '1'and user.id =
'#{user.id}'") %>
<% car2 = Objects.count(:conditions => "caratt2= '1'and user.id =
'#{user.id}'") %>
ecc.
(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 :-)
--
Posted via http://www.ruby-forum.com/.
More information about the Ml
mailing list