Velocizzare tabella Views con campi e riferimenti tassonomia

10 contenuti / 0 new
Ultimo contenuto
Velocizzare tabella Views con campi e riferimenti tassonomia

Ho una Vista che visualizza campi di testo, autori, commenti e termini di tassonomia tutti in relazione ai singoli nodi.

I campi di tassonomia sono 2 e hanno con 3 livelli gerarchici ciascuno, vengono visualizzati tutti i termini in base alla gerarchia.

I nodi creati sono circa 50 al giorno, quindi la mole di dati è parecchia.... e la mia vista si sta rallentando in modo molto ma molto vistoso!

Guardando la query prodotta ho notato che l'operazione che richiede più tempo sono i vari JOIN per recuperare i termini della tassonomia (padri e figli) relazionati ai vari nodi....

I nodi che vengono creati hanno 2 campi di tassonomia con 3 termini di gerarchia ciascuno, utilizzo il modulo Simple hierarchical select per inserire i termini in modo relazionato e poi nella mia vista gioco con le relazioni per visualizzare i termini padre.

Io ho utilizzato questo sistema perchè mi serviva inserire una cosa tipo regione-città-comune da un elenco che ho creato, se potessi usare campi normali invece che tassonomici mi andrebbe bene comunque.... ma non ho trovato come farlo.

Quale tecnica mi consigliate per velocizzare la mia vista?

Drupal Version:

Provo a riformulare la domanda:

Utilizzo massicciamente il modulo Simple hierarchical select e i termini di tassonomia con più livelli gerarchici, quello che mi chiedo è come questi termini vengono scritti nelle tabelle MySQL.

Creo un nodo, e assegno tramite Simple hierarchical select un termine di tassonomia di terzo livello, ovvero figlio del figlio del padre, ora tramite views se relaziono il nodo ai termini di tassonomia mi viene visualizzato solo l'ultimo parente e non i suoi genitori, per visualizzare i genitori devo creare 2 relazioni con relativi LEFT JOIN al database ossia una ricerca a ritroso dei termini con un dispendio di risorse per la query.

Non c'e' un modo più semplice per visualizzare in views il termine padre?

Ciao, il tuo nodo è associato ad un termine tassonomico ben preciso, quindi è corretto che views ti mostri quel termine e non il padre. Per fare quello che tu richiedi (senza ammazzare views) devi crearti un "field formatter" di visualizzazione per i termini tassonomici e dirgli (dentro view) di utilizzare quel "field formatter" quando deve "visualizzare" quel campo. Il tuo widget prende il termine tassonomico e tramite delle query ricorsive al contrario (ovvero che cercano il padre fino ad arrivare a quello che ha padre = 0) trovano il padre, e tu mostri il padre.

Inizia a guardare hook_field_formatter_info(). Io ad esempio mi sono costruito un formatter che mi stampa le immagini associate ai termini tassonomici, al posto del loro nome.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Grazie ziobudda, le tue risposte sono sempre molto tecniche e precise :)

Io sono alle prime armi, quindi non ancora molto ferrato ed in continuo apprendimento...

Io ho cominciato a seguire invece la strada della funzionalità di MySQL views, ma non ho idea come implementarla in Drupal Views.

Quello che mi consigli tu invece è diverso ed era una cosa a cui avevo pensato anche io, ma ho un dubbio per entrambe le strade..... i filtri esposti di ricerca tramite il modulo shs (Simple hierarchical select) che mi permettere di filtrare tutti i contenuti in base alla gerarchia della tassonomia tipo regione-città-comune, ovvero:
mostrami tutti i contenuti di una determinata regione, oppure di una determinata città oppure ancora più definito con lo specifico comune.

Secondo te con queste soluzioni il filtro mi funzionerebbe?

Allora.... analizzando meglio la situazione il consiglio di ziobudda è proprio quello che fa al caso mio :)

Ora devo capire come procedere.... non ho mai usato gli hook e costruito un modulo :p

A prescindere dalla soluzione che mi ha consigliato Ziobudda, avete altri consigli per ottenere il mio risultato:

Gli utenti ogni giorno devono inserire decine di segnalazioni, quindi nodi, nei nodi ci devono essere delle selezioni gerarchiche preimpostate (tipo regione-città-comune) e un campo dove scrivere la descrizione.

La visualizzazione delle segnalazioni deve essere una tabella, ogni nodo una riga, con filtri di ricerca gerarchici (mostrami solo una determinata città o comune di quella città, ecc....)

Il modo che ho utilizzato secondo voi è corretto? Avete altre strade da consigliarmi?

Ciao, per la tripletta regione-comune-città potresti provare https://drupal.org/project/hierarchical_select
Non l'ho mai usato e non so se puo' funzionare con views, ma dacci un occhio.

Per la vista, la puoi fare con views, ma per avere l'effetto "gerarchia" devi andare di JS e di AJAX.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Hierarchical select funziona solo con la tassonomia e non ha filtri per Views, per questo uso già Simple hierarchical select.

Per duplicare i termini di tassonomia ho usato il modulo Computed Field.... anche se non so se il codice che ho inserito nei 3 computed field sia tra i più ottimizzati.... comunque adesso funziona.... devo solo provarli nella mia Views ;)

Un consiglio....

Nel tipo di contenuto che ho creato utilizzo anche campi di tassonomia per semplici selezioni SI/NO che poi carico in Views.
La Views sarebbe più veloce se utilizzassi campi elenco o boleano invece di tassonomia? O non è molto rilevante visto che i termini non hanno gerarchia?

Molto più veloce un boleano che una tassonomia.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Copiando i campi di tassonomia gerarchici in Computed Field la mia Views ci mette 1/3 del tempo a caricare