Django是否为基本查询做了索引优化(使用Postgres)?

时间:2014-09-11 17:32:00

标签: sql django postgresql

我想知道django是否正在优化以下查询。我有一个地址模型,该字段模型在字段User上编制索引,但不在字段zip_code上。

当我这样做时:

Address.objects.get(user=user, zip_code=zip_code)

我希望发生的是查询首先利用索引返回与用户关联的地址,然后迭代该用户的地址列表并匹配具有该用户的地址列表给定的zip_code。

但是,我担心这个查询不会利用我将用户模型编入索引用户的事实,而是迭代遍历所有地址,试图确保用户和zip_code匹配。

1 个答案:

答案 0 :(得分:1)

这个问题与Django没有任何关系。 Django不是一个数据库,并且不以任何方式负责索引优化。 Django只是将查询转换为SQL并将其传递给真实数据库。可能是Postgres完成了您所描述的内容:要找出答案,您可以使用Django调试工具栏在特定查询上运行EXPLAIN,并查看使用的索引。但是,如果这是一个你会做很多的查询,你可能想要在user_id和zip_code上创建一个组合索引。