Django 模型字段索引

标签 django indexing django-models

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

下面两个有什么区别?

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_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

示例 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/

相关文章:

indexing - 不在lucene中查询

python - 如何仅当某个字段为 True 时才渲染 View ? - Django

python - 如何处理 Django 1.8.7 中的异常

python - django - 在 ManyToMany 和 ForeignKey 中使用 related_name

Pandas 1.0.1 - 如何使用包含切片器的列表通过 MultiIndex 索引 DataFrame

python - 使用Django ORM的bulk_create函数创建后如何高效地获取对象?

css - Django:对于扩展另一个 ModelForm 的 ModelForm 不显示 CSS 类

django - 计算 mongoengine ListField 元素

django - GeoDjango 在 Windows 10 中找不到 GDAL 库

View 上的 Mysql 索引不起作用