我只知道索引很有帮助,而且查询速度更快。
下面两个有什么区别?
1.
class Meta:
indexes = [
models.Index(fields=['last_name', 'first_name',]),
models.Index(fields=['-date_of_birth',]),
]
2.
class Meta:
indexes = [
models.Index(fields=['first_name',]),
models.Index(fields=['last_name',]),
models.Index(fields=['-date_of_birth',]),
]
最佳答案
示例 1:
第一个示例在 last_name
和 first_name
字段上创建单个索引。
indexes = [
models.Index(fields=['last_name', 'first_name',]),
]
如果您同时搜索姓氏和名字,或者单独搜索姓氏(因为 last_name
是索引中的第一个字段),这将很有用。
MyModel.objects.filter(last_name=last_name, first_name=first_name)
MyModel.objects.filter(last_name=last_name)
但是,它对于单独搜索 first_name
没有用(因为 first_name
不是索引中的第一个字段)。
MyModel.objects.filter(first_name=first_name) # not useful
示例 2:
第二个示例为 first_name
字段创建一个索引,并为 last_name
字段创建一个单独的索引。
indexes = [
models.Index(fields=['first_name',]),
models.Index(fields=['last_name',]),
]
如果您根据代码中的名字或姓氏进行查找,这将很有用
MyModel.objects.filter(first_name=search)
MyModel.objects.filter(last_name=search)
关于Django 模型字段索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45328826/