From 8fc80b34a0b01876c8957feb7a2f315b7dc0b444 Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 4 Sep 2022 16:11:02 +0100 Subject: [PATCH] Add another index for Action table on postgres (#21033) (#21054) Backport #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/action.go | 9 ++++++++- models/migrations/v218.go | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/models/action.go b/models/action.go index 4cbfc7a79..f4f71e844 100644 --- a/models/action.go +++ b/models/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 dee8e5517..e08c6c5b0 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 {