我想知道django是否正在优化以下查询。我有一个地址模型,该字段模型在字段User上编制索引,但不在字段zip_code上。
当我这样做时:
Address.objects.get(user=user, zip_code=zip_code)
我希望发生的是查询首先利用索引返回与用户关联的地址,然后迭代该用户的地址列表并匹配具有该用户的地址列表给定的zip_code。
但是,我担心这个查询不会利用我将用户模型编入索引用户的事实,而是迭代遍历所有地址,试图确保用户和zip_code匹配。
答案 0 :(得分:1)
这个问题与Django没有任何关系。 Django不是一个数据库,并且不以任何方式负责索引优化。 Django只是将查询转换为SQL并将其传递给真实数据库。可能是Postgres完成了您所描述的内容:要找出答案,您可以使用Django调试工具栏在特定查询上运行EXPLAIN,并查看使用的索引。但是,如果这是一个你会做很多的查询,你可能想要在user_id和zip_code上创建一个组合索引。