je la structure de base de données suivante:optimize django admin sql
class Book(models.Model):
id = models.AutoField(primary_key=True, db_column='id')
name = models.CharField(max_length=255, db_column='name')
author = models.ForeignKey('Author', to_field='id', db_column='author_id')
class Author(models.Model):
id = models.AutoField(primary_key=True, db_column='id')
fio = models.CharField(max_length=255, db_column='fio')
def __unicode__(self):
return self.name
Et cette classe Admin pour livre:
class BookAdmin(admin.ModelAdmin):
list_display = ('id', 'name',)
fields = ('id', 'name', 'author',)
readonly_fields = ('id',)
raw_id_fields = ('author',)
Tout fonctionne très bien quand il est 500-1000 records du livre, mais sur 1 2 millions de pages de livres geler pendant quelques minutes avant de montrer quelque chose. Profiler montre moi que Django joindre des livres avec des auteurs et ensuite couper les 100 derniers enregistrements. Comment puis-je optimiser django pour joindre des auteurs après avoir sélectionné des livres de la base de données? Ou utiliser quelque chose comme ça
select * from (SELECT * FROM books ORDER BY books.id DESC LIMIT 100) t, authors a where t.author_id = a.id
Cela affecte-t postgresql aussi? –
@BurhanKhalid Je suis sûr que c'est mysql-spécifique. Merci. – alecxe