sql - Django 是否对基本查询(使用 Postgres)进行索引优化?

标签 sql django postgresql

我想知道下面的查询是否被 django 优化。我有一个地址模型,该模型在 User 字段上建立了索引,但在 zip_code 字段上没有建立索引。

当我这样做时:

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

希望发生的是,查询首先利用索引返回与用户关联的地址,然后遍历该用户的地址列表并匹配具有给定的邮政编码。

但是,我担心此查询不会利用我已为用户建立索引的用户模型这一事实,而是会遍历所有地址以尝试确保用户和邮政编码匹配。

最佳答案

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

关于sql - Django 是否对基本查询(使用 Postgres)进行索引优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25793693/

相关文章:

php - 用于交 key Web 应用程序的 Django 或 CodeIgniter

postgresql - 如何使用 PostgreSQL 数据库作为 XMLA 数据源?

php - 将任何日期字符串转换为没有时区的时间戳

python - 向文章 django createviewforeignkey 添加评论

django - 呈现用户创建的 Django 模板是否安全?

sql 到 postgresql

php - Sum 查询不能正常工作正常 sql 和 php

java - JDBCTemplate 查询多次使用参数

mysql - 如何根据另一列的最大值获取一列的多个值?

sql - 对两个非数字列求和