Files

22 lines
826 B
SQL

CREATE TABLE comments
(
id BIGINT PRIMARY KEY,
post_id BIGINT NOT NULL REFERENCES posts (id),
author_id BIGINT NOT NULL,
content TEXT NOT NULL,
like_count INT DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMPTZ
);
-- 基础索引
CREATE INDEX idx_comments_post ON comments (post_id, created_at) WHERE deleted_at IS NULL;
CREATE INDEX idx_comments_author ON comments (author_id, created_at DESC) WHERE deleted_at IS NULL;
-- 三元组索引用于评论内容搜索
CREATE INDEX idx_comments_content_trgm ON comments USING gin (content gin_trgm_ops)
WHERE deleted_at IS NULL;
-- 热门评论索引
CREATE INDEX idx_comments_post_likes ON comments (post_id, like_count DESC, created_at)
WHERE deleted_at IS NULL;