小编Lar*_*ars的帖子

非常慢的简单 JOIN 查询

简单的数据库结构(用于在线论坛):

CREATE TABLE users (
    id integer NOT NULL PRIMARY KEY,
    username text
);
CREATE INDEX ON users (username);

CREATE TABLE posts (
    id integer NOT NULL PRIMARY KEY,
    thread_id integer NOT NULL REFERENCES threads (id),
    user_id integer NOT NULL REFERENCES users (id),
    date timestamp without time zone NOT NULL,
    content text
);
CREATE INDEX ON posts (thread_id);
CREATE INDEX ON posts (user_id);
Run Code Online (Sandbox Code Playgroud)

表中大约有 8users万个条目和 260 万个条目posts。这个通过帖子获得前 100 位用户的简单查询需要2.4 秒

EXPLAIN ANALYZE SELECT u.id, …
Run Code Online (Sandbox Code Playgroud)

postgresql performance postgresql-9.6 query-performance

12
推荐指数
2
解决办法
8013
查看次数