我有以下的數據庫結構:優化Django管理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
而這個管理類圖書:
class BookAdmin(admin.ModelAdmin):
list_display = ('id', 'name',)
fields = ('id', 'name', 'author',)
readonly_fields = ('id',)
raw_id_fields = ('author',)
一切正常時,它的500-1000書中記載,但1- 200萬本書頁面凍結了幾分鐘之後才顯示出某種東西。 Profiler告訴我,django與作者一起加入書籍,然後剪下最後的100條記錄。
SELECT ••• FROM `books` INNER JOIN `authors` ON (`books`.`author_id` = `authors`.`id`) ORDER BY `books`.`id` DESC LIMIT 100
從數據庫中選擇書籍後,如何優化django以加入作者?或者使用類似的東西
select * from (SELECT * FROM books ORDER BY books.id DESC LIMIT 100) t, authors a where t.author_id = a.id
這會影響PostgreSQL的呢? –
@BurhanKhalid我很肯定這是mysql特有的。謝謝。 – alecxe