django db_index 用于外键反向查找
django db_index for foreign key reverse lookup
我读到 django 会自动为所有外键创建 db_index。但是,db_index 是否也提高了反向查找的性能?
例如,如果 B 有 A 的外键并且我使用 a.b_set.all(),我是否享受数据库索引带来的性能提升?
如果没有,有没有办法使用 db 索引使外键反向查找更快?
谢谢,
假设您有一个简单的模型结构:
class Author(models.Model):
name = models.CharField(max_length=70)
email = models.EmailField()
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author)
正如你提到的 Book.author
已经有了索引,因为它是 ForeignKey
正在查询:
author_books = Book.objects.filter(author=a)
或
author_books = a.book_set.all()
产生完全相同的查询,因此 book.author
索引将在两种情况下使用。
我读到 django 会自动为所有外键创建 db_index。但是,db_index 是否也提高了反向查找的性能?
例如,如果 B 有 A 的外键并且我使用 a.b_set.all(),我是否享受数据库索引带来的性能提升?
如果没有,有没有办法使用 db 索引使外键反向查找更快?
谢谢,
假设您有一个简单的模型结构:
class Author(models.Model):
name = models.CharField(max_length=70)
email = models.EmailField()
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author)
正如你提到的 Book.author
已经有了索引,因为它是 ForeignKey
正在查询:
author_books = Book.objects.filter(author=a)
或
author_books = a.book_set.all()
产生完全相同的查询,因此 book.author
索引将在两种情况下使用。