我正在尝试帮助一位在 PostgreSQL 查询方面遇到问题的同事。
我们将它缩小到一个表的连接,这使得查询变得非常缓慢,并且经过调查,我们发现即使是对“数据”表的简单 select * 请求也需要长达 2 分钟才能返回结果。
该表包含 420,000 条记录和 13 列,其中没有一个是 BLOB 或任何大量内容(它们都是文本)。
运行 EXPLAIN ANALYZE VERBOSE 大大低估了返回结果所需的时间
即对于 SELECT * FROM DATA
"Seq Scan on data (cost=0.00..18284.35 rows=389735 width=27)
(actual time=0.135..594.929 rows=426934 loops=1)"
" Output: id,..."
"Total runtime: 1069.643 ms"
Run Code Online (Sandbox Code Playgroud)
而在没有 EXPLAIN 的情况下运行查询会给出
Total query runtime: 86598 ms.
426934 rows retrieved.
Run Code Online (Sandbox Code Playgroud)
如果我在提问时违反了任何惯例,我很抱歉,但我根本不了解 Postgres,所以如果有人能建议我们应该寻找什么样的潜在问题来帮助解决这个问题,我将不胜感激已收到。
编辑:根据要求,表定义
CREATE TABLE data
(
id text NOT NULL,
methodid text NOT NULL,
replicateid text,
t_id text NOT NULL,
t_name text NOT …
Run Code Online (Sandbox Code Playgroud) postgresql ×1