diff --git a/README.md b/README.md index 394d13f..841fd0c 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,16 @@ CREATE INDEX idx_id_desc ON web_images (id DESC); -- 复合筛选降序索引 article_category_top_id CREATE INDEX idx_acti_id_desc ON web_images (article_category_top_id, id DESC); +-- 为 web_images 表的 color 设置复合索引用于筛选 +CREATE INDEX idx_color_0 ON web_images (color_0_r, color_0_g, color_0_b); +CREATE INDEX idx_color_1 ON web_images (color_1_r, color_1_g, color_1_b); + +-- 为 web_images 表的 day_rank 行设置倒序索引用于排序 +CREATE INDEX idx_day_rank_desc ON web_images (day_rank DESC); + + + + ``` ```bash diff --git a/api/image.go b/api/image.go index 0c66916..92f1f4f 100644 --- a/api/image.go +++ b/api/image.go @@ -46,6 +46,11 @@ type Image struct { Emoji4 int `json:"emoji4"` Emoji5 int `json:"emoji5"` Views int `json:"views"` + DayRank int `json:"day_rank"` + WeekRank int `json:"week_rank"` + MonthRank int `json:"month_rank"` + YearRank int `json:"year_rank"` + AeonRank int `json:"aeon_rank"` } func (Image) TableName() string { @@ -159,13 +164,18 @@ var imageType = graphql.NewObject(graphql.ObjectConfig{ return p.Source.(Image).Text, nil }, }, - "user": &graphql.Field{Type: userType, Description: "图像所属用户"}, - "emoji1": &graphql.Field{Type: graphql.Int, Description: "表情1数量"}, - "emoji2": &graphql.Field{Type: graphql.Int, Description: "表情2数量"}, - "emoji3": &graphql.Field{Type: graphql.Int, Description: "表情3数量"}, - "emoji4": &graphql.Field{Type: graphql.Int, Description: "表情4数量"}, - "emoji5": &graphql.Field{Type: graphql.Int, Description: "表情5数量"}, - "views": &graphql.Field{Type: graphql.Int, Description: "浏览量"}, + "user": &graphql.Field{Type: userType, Description: "图像所属用户"}, + "emoji1": &graphql.Field{Type: graphql.Int, Description: "表情1数量"}, + "emoji2": &graphql.Field{Type: graphql.Int, Description: "表情2数量"}, + "emoji3": &graphql.Field{Type: graphql.Int, Description: "表情3数量"}, + "emoji4": &graphql.Field{Type: graphql.Int, Description: "表情4数量"}, + "emoji5": &graphql.Field{Type: graphql.Int, Description: "表情5数量"}, + "views": &graphql.Field{Type: graphql.Int, Description: "浏览量"}, + "day_rank": &graphql.Field{Type: graphql.String, Description: "日榜"}, + "week_rank": &graphql.Field{Type: graphql.String, Description: "周榜"}, + "month_rank": &graphql.Field{Type: graphql.String, Description: "月榜"}, + "year_rank": &graphql.Field{Type: graphql.String, Description: "年榜"}, + "aeon_rank": &graphql.Field{Type: graphql.String, Description: "总榜"}, }, }) @@ -564,6 +574,12 @@ var ImageItems = &graphql.Field{ )).As("row_num")) } + //// 针对排行榜优化, 减少结果集 + //if p.Args["sort"] != nil && p.Args["sort"].(string) == "day_rank" { + // fmt.Println("针对排行榜优化, 减少结果集 day_rank > 0") + // query = query.Where(goqu.L("day_rank > 0")) + //} + // 图像按点赞顺序排序 p.Args["sort"].(string) == "praise_time" if p.Args["praise"] != nil { query = query.Select("web_images.id", goqu.L(