aboutsummaryrefslogtreecommitdiffstats
path: root/models/issues
diff options
context:
space:
mode:
authorJakobDev <jakobdev@gmx.de>2023-09-21 03:30:48 +0200
committerGitHub <noreply@github.com>2023-09-21 01:30:48 +0000
commit14731a34ff4d854b8427fa3ca880f40bcd86e1e3 (patch)
treeddd20542aa999a8a3b473d2a840e3be237128cf8 /models/issues
parent2001ffee3fa7e100c0829660a505fcb6044296d0 (diff)
downloadgitea-14731a34ff4d854b8427fa3ca880f40bcd86e1e3.tar.gz
gitea-14731a34ff4d854b8427fa3ca880f40bcd86e1e3.zip
Add index to `issue_user.issue_id` (#27154)
This fixes a performance bottleneck. It was discovered by Codeberg. Every where query on that table (which has grown big over time) uses this column, but there is no index on it. See this part of the log which was posted on Matrix: ``` 2023/09/10 00:52:01 ...rs/web/repo/issue.go:1446:ViewIssue() [W] [Slow SQL Query] UPDATE `issue_user` SET is_read=? WHERE uid=? AND issue_id=? [true x y] - 51.395434887s 2023/09/10 00:52:01 ...rs/web/repo/issue.go:1447:ViewIssue() [E] ReadBy: Error 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 2023/09/10 00:52:01 ...eb/routing/logger.go:102:func1() [I] router: completed GET /Codeberg/Community/issues/1201 for [::ffff:xxx]:0, 500 Internal Server Error in 52384.2ms @ repo/issue.go:1256(repo.ViewIssue) ```
Diffstat (limited to 'models/issues')
-rw-r--r--models/issues/issue_user.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/models/issues/issue_user.go b/models/issues/issue_user.go
index d053b1d543..24bb74648d 100644
--- a/models/issues/issue_user.go
+++ b/models/issues/issue_user.go
@@ -15,7 +15,7 @@ import (
type IssueUser struct {
ID int64 `xorm:"pk autoincr"`
UID int64 `xorm:"INDEX"` // User ID.
- IssueID int64
+ IssueID int64 `xorm:"INDEX"`
IsRead bool
IsMentioned bool
}