2013-01-24 11 views
5

Ho un CMS in esecuzione su Django 1.4 e il database è Postgresql 9.1. Ho un sacco di contenuti nel CMS e il problema che sto affrontando in questo momento è che la ricerca di Django Admin impiega un'eternità per recuperare i risultati. Vorrei sapere se ci sono opzioni per ottimizzare questo comportamento della ricerca di Django Admin. So che Django usa la query LIKE su Postgresql per fare ricerche. So che Postgresql 9.1 ha l'indice GIN e GIST che potrebbe aiutare ad accelerare questo comportamento di Django. Posso anche modificare questo comportamento di ricerca per renderlo veloce e compromettere un po 'la qualità dei risultati di ricerca. Mi piacerebbe conoscere l'approccio più ottimale per ottimizzare questo comportamento di ricerca di Django?Django Admin Ottimizzazione ricerca

risposta

2

Se non si desidera modificare Django, eseguire il profilo della query di ricerca e aggiungere gli indici GIN e GIST appropriati. Altrimenti, potresti voler integrare qualcosa come Haystack per potenziare la ricerca un po 'più velocemente e senza legare il tuo database.

Link utili

http://www.rossp.org/blog/2009/jan/28/django-postgresql-fulltext/

2

Si potrebbe desiderare di utilizzare il Django Debug toolbar per verificare che le query SQL sono in realtà lento.

Abbiamo trovato che Django admin's implicit use of UPPER ha provocato Postgres ignorando tutti gli indici esistenti. Se questo è il problema potresti creare un indice sulla rappresentazione in maiuscolo dei tuoi dati.