【发布时间】:2014-05-31 20:28:54
【问题描述】:
我在一个由 PostgreSQL 数据库支持的 Django 应用程序中有四个表:
- 客户
- 销售订单
- 用户组
- CustomerToUserGroupMembership
从 SalesOrder 到 UserGroup 有一个标准外键,并且 Customer 和 UserGroup 之间存在 M:M 关系。所有表都有一个uuid 列作为PK。
最终,我尝试使用快速 SQL 查询来查找订单,该查询将在 Python 条件中表示为 order.userGroup not in order.customer.userGroups.all()。
我尝试了类似的方法:
SELECT o.uuid
FROM myapp_salesorder o JOIN myapp_customer c ON o.customer_id = c.uuid
WHERE o."userGroup_id" NOT IN (
SELECT m."userGroup_id" FROM myapp_customertousergroupmembership m
WHERE m.customer_id = c.uuid
);
...但是子选择确实减慢了速度。
有没有更好的方法来制作它以使其更快?
【问题讨论】:
标签: python sql django postgresql