【发布时间】:2023-04-02 13:00:01
【问题描述】:
我在使用 PostgreSQL 处理大表,查询耗时太长。
我有两张桌子。第一个大约有 600 万行(数据表),第二个大约有 30000 行(用户表)。
每个用户在数据表中大约有 200 行。 之后,data 和 users 表可能会增加多达 30 倍。
我的查询是:
SELECT d.name, count(*) c
FROM users AS u JOIN data AS d on d.id = u.id
WHERE u.language = 'eng' GROUP BY d.name ORDER BY c DESC LIMIT 10;
90%的用户有eng语言,查询时间为7秒。每列都有索引!
我读到了 Merge Join,它应该非常快,所以我按 id 对表进行排序并强制 Merge Join,但时间增加到 20 秒。
我想,表配置错误,但我不知道如何修复它。
我应该进行其他改进吗?
【问题讨论】:
标签: sql postgresql join postgresql-performance