From 58a80ba69c73715dfc527ec1ee327f7c6ad4c1d6 Mon Sep 17 00:00:00 2001 From: zeripath Date: Sat, 3 Sep 2022 17:27:59 +0100 Subject: [PATCH] Add another index for Action table on postgres (#21033) In #21031 we have discovered that on very big tables postgres will use a search involving the sort term in preference to the restrictive index. Therefore we add another index for postgres and update the original migration. Fix #21031 Signed-off-by: Andrew Thornton --- models/activities/action.go | 9 ++++++++- models/migrations/v218.go | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/models/activities/action.go b/models/activities/action.go index 78a519e9a79..22419e20db9 100644 --- a/models/activities/action.go +++ b/models/activities/action.go @@ -98,7 +98,14 @@ func (a *Action) TableIndices() []*schemas.Index { actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType) actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted") - return []*schemas.Index{actUserIndex, repoIndex} + indices := []*schemas.Index{actUserIndex, repoIndex} + if setting.Database.UsePostgreSQL { + cudIndex := schemas.NewIndex("c_u_d", schemas.IndexType) + cudIndex.AddColumn("created_unix", "user_id", "is_deleted") + indices = append(indices, cudIndex) + } + + return indices } // GetOpType gets the ActionType of this action. diff --git a/models/migrations/v218.go b/models/migrations/v218.go index dee8e5517e5..e08c6c5b0f5 100644 --- a/models/migrations/v218.go +++ b/models/migrations/v218.go @@ -5,6 +5,7 @@ package migrations import ( + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/timeutil" "xorm.io/xorm" @@ -37,8 +38,14 @@ func (*improveActionTableIndicesAction) TableIndices() []*schemas.Index { actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType) actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted") + indices := []*schemas.Index{actUserIndex, repoIndex} + if setting.Database.UsePostgreSQL { + cudIndex := schemas.NewIndex("c_u_d", schemas.IndexType) + cudIndex.AddColumn("created_unix", "user_id", "is_deleted") + indices = append(indices, cudIndex) + } - return []*schemas.Index{actUserIndex, repoIndex} + return indices } func improveActionTableIndices(x *xorm.Engine) error {