我只知道索引很有帮助,而且查询速度更快.

下面两个有什么不同?

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',]),
]

推荐答案

Example 1:

第一个示例在last_namefirst_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

Example 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相关问答推荐

Django、htmx删除记录并更新

获取 Django (postgres) 中带注释字段的平均值

错误404除主要应用程序外,HTML页面无法渲染的其他应用程序

使用OuterRef过滤器获取Django记录的最大值

Django多对多关系报错:<title> object (None)>需要先设置id字段的值.

Django 注释(),计数()

Django 和 HTML 无法从指定时间开始视频

在 Django Admin change_list 视图中更改 list_editable 字段时保存 Django 模型

多租户 Django 应用程序:根据请求更改数据库连接?

Django error:不能分配必须是实例

Django rest-auth allauth 注册,带有邮箱、名字和姓氏,没有用户名

Django:创建索引:非唯一,多列

获取 Django 表单中的错误列表

Django模板转义

Django manage.py:在其依赖之前应用迁移

Django:如何将数据保存到 ManyToManyField?

javascript 文件中的 Django {% static 'path' %}

Django:验证上传文件的文件类型

如何在该元素中的所有应用程序之间共享元素范围的模板标签

如何获取 Django 模型字段对象的值