index_together的顺序在Django模型中是否重要?

Luk*_*pan 7 mysql sql django postgresql

在使用index_together Meta属性定义模型时,列的顺序是否重要?

换句话说,两者之间是否存在差异

Class myModel(models.Model):
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    favorite_color = models.CharField(max_length=20)

    class Meta:
        index_together = ('name', 'address', 'favorite_color')
Run Code Online (Sandbox Code Playgroud)

VS

Class myModel(models.Model):
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    favorite_color = models.CharField(max_length=20)

    class Meta:
        index_together = ('favorite_color', 'name', 'address')
Run Code Online (Sandbox Code Playgroud)

我只是问,因为我注意到在查看表的结构时,键中的每一列都有一个"key in key"属性.MySQL/PostgreSQL是否希望按顺序查询列?

除此之外,将列一起索引与单独索引之间是否存在很大差异?

tja*_*ati 9

index_together的顺序解释了创建索引的"路径".您可以从左向右查询以从索引中获利.

你的第一个index_together:

    index_together = ('name', 'address', 'favorite_color')
Run Code Online (Sandbox Code Playgroud)

如果您的第一个过滤器是name使用索引.如果第一个是name,第二个是address索引也被使用.

但是如果你过滤address然后name或者address,favorite_color那么索引就无法使用了.