首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个查询会导致顺序扫描?

为什么这个查询会导致顺序扫描?
EN

Stack Overflow用户
提问于 2012-11-16 21:27:01
回答 2查看 300关注 0票数 1

我是PostgreSQL的新手,如果有些明显的事情对我来说不清楚,请原谅。我有一个数据库,有4.5亿行分布在6个表中(每个表都有主键)。当我运行以下查询时:

代码语言:javascript
复制
SELECT * FROM "Payments" AS p
JOIN "PaymentOrders" AS po ON po."Id" = p."PaymentOrderId"
WHERE po."Id" = 1000

“Id”是主键。我只是对整个数据库进行了真空分析。您可以看到解释分析细节这里。PaymentOrders表包含4000万行,而支付包含3.5亿行。我在Windows8机器上运行x64 PostgreSQL 9.2,I5 CPU (4核3.3GHz),8GB内存。您还可以看到我的postgresql.conf文件这里

有人知道为什么这个查询会导致对支付表的顺序扫描吗?我是做错什么了还是PostgreSQL有一些严重的缺陷?我开始严重怀疑PostgreSQL查询计划器.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-16 21:30:54

你索引了外键关系的两边吗?特别是,是否有关于Payments.PaymentOrderID的索引?

票数 2
EN

Stack Overflow用户

发布于 2012-11-19 01:15:50

po."Id“= p."PaymentOrderId”是同一类型吗?它们需要匹配规划者使用索引来连接它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13424650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档