diff options
author | Zettat123 <zettat123@gmail.com> | 2023-03-24 23:44:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-24 23:44:33 +0800 |
commit | b958dba1a0f84b986acdb82a6609d70d98140640 (patch) | |
tree | e1dae37308862c147577b639f26cad1fe92e24c2 | |
parent | e52ea44edd99e6ec1c5567c78e663802cdf3cf91 (diff) | |
download | gitea-b958dba1a0f84b986acdb82a6609d70d98140640.tar.gz gitea-b958dba1a0f84b986acdb82a6609d70d98140640.zip |
Improve indices for `action` table (#23532)
Close #21611
Add the index mentioned in
https://github.com/go-gitea/gitea/issues/21611#issuecomment-1451113252 .
Since we already have an index for `("created_unix", "user_id",
"is_deleted")` columns on PostgreSQL, I removed the database type check
to apply this index to all types of databases.
-rw-r--r-- | models/activities/action.go | 10 | ||||
-rw-r--r-- | models/migrations/migrations.go | 2 | ||||
-rw-r--r-- | models/migrations/v1_20/v249.go | 45 |
3 files changed, 51 insertions, 6 deletions
diff --git a/models/activities/action.go b/models/activities/action.go index c1d17517ba..4111d8098b 100644 --- a/models/activities/action.go +++ b/models/activities/action.go @@ -98,12 +98,10 @@ 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") - indices := []*schemas.Index{actUserIndex, repoIndex} - if setting.Database.Type.IsPostgreSQL() { - cudIndex := schemas.NewIndex("c_u_d", schemas.IndexType) - cudIndex.AddColumn("created_unix", "user_id", "is_deleted") - indices = append(indices, cudIndex) - } + cudIndex := schemas.NewIndex("c_u_d", schemas.IndexType) + cudIndex.AddColumn("created_unix", "user_id", "is_deleted") + + indices := []*schemas.Index{actUserIndex, repoIndex, cudIndex} return indices } diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index 6224e1c8d7..bec406f7bf 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -475,6 +475,8 @@ var migrations = []Migration{ NewMigration("Fix incorrect project type", v1_20.FixIncorrectProjectType), // v248 -> v249 NewMigration("Add version column to action_runner table", v1_20.AddVersionToActionRunner), + // v249 -> v250 + NewMigration("Improve Action table indices v3", v1_20.ImproveActionTableIndices), } // GetCurrentDBVersion returns the current db version diff --git a/models/migrations/v1_20/v249.go b/models/migrations/v1_20/v249.go new file mode 100644 index 0000000000..02951a74d6 --- /dev/null +++ b/models/migrations/v1_20/v249.go @@ -0,0 +1,45 @@ +// Copyright 2023 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package v1_20 //nolint + +import ( + "code.gitea.io/gitea/modules/timeutil" + + "xorm.io/xorm" + "xorm.io/xorm/schemas" +) + +type Action struct { + UserID int64 // Receiver user id. + ActUserID int64 // Action user id. + RepoID int64 + IsDeleted bool `xorm:"NOT NULL DEFAULT false"` + IsPrivate bool `xorm:"NOT NULL DEFAULT false"` + CreatedUnix timeutil.TimeStamp `xorm:"created"` +} + +// TableName sets the name of this table +func (a *Action) TableName() string { + return "action" +} + +// TableIndices implements xorm's TableIndices interface +func (a *Action) TableIndices() []*schemas.Index { + repoIndex := schemas.NewIndex("r_u_d", schemas.IndexType) + repoIndex.AddColumn("repo_id", "user_id", "is_deleted") + + actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType) + actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted") + + cudIndex := schemas.NewIndex("c_u_d", schemas.IndexType) + cudIndex.AddColumn("created_unix", "user_id", "is_deleted") + + indices := []*schemas.Index{actUserIndex, repoIndex, cudIndex} + + return indices +} + +func ImproveActionTableIndices(x *xorm.Engine) error { + return x.Sync(new(Action)) +} |