21 lines
926 B
SQL
21 lines
926 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; |