Files
juwan-backend/desc/sql/game/games.sql
2026-02-27 19:17:01 +08:00

30 lines
1.2 KiB
SQL

CREATE TABLE games (
id BIGINT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE,
icon TEXT NOT NULL,
category VARCHAR(50) NOT NULL,
sort_order INT DEFAULT 0,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- 基础索引
CREATE INDEX idx_games_category ON games(category) WHERE is_active = TRUE;
CREATE INDEX idx_games_sort ON games(sort_order, id) WHERE is_active = TRUE;
-- 三元组索引用于游戏名称模糊搜索
CREATE INDEX idx_games_name_trgm ON games USING gin(name gin_trgm_ops) WHERE is_active = TRUE;
-- 复合索引优化分类+排序查询
CREATE INDEX idx_games_category_sort ON games(category, sort_order, id) WHERE is_active = TRUE;
-- 全文搜索索引
CREATE INDEX idx_games_fulltext ON games USING gin(
to_tsvector('simple', name || ' ' || category)
) WHERE is_active = TRUE;
CREATE TRIGGER trigger_games_updated_at
BEFORE UPDATE ON games
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();