Переглянути джерело

optimization on database IN

tags/v1.0.0
Lunny Xiao 7 роки тому
джерело
коміт
ade6d4a20f
1 змінених файлів з 4 додано та 5 видалено
  1. 4
    5
      models/org.go

+ 4
- 5
models/org.go Переглянути файл

"os" "os"
"strings" "strings"


"github.com/go-xorm/builder"
"github.com/go-xorm/xorm" "github.com/go-xorm/xorm"

"code.gitea.io/gitea/modules/base"
) )


var ( var (
Select("`repository`.*"). Select("`repository`.*").
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id"). Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id").
Where("(`repository`.owner_id=? AND `repository`.is_private=?)", org.ID, false). Where("(`repository`.owner_id=? AND `repository`.is_private=?)", org.ID, false).
Or("team_repo.team_id IN (?)", strings.Join(base.Int64sToStrings(teamIDs), ",")).
Or(builder.In("team_repo.team_id", teamIDs)).
GroupBy("`repository`.id"). GroupBy("`repository`.id").
OrderBy("updated_unix DESC"). OrderBy("updated_unix DESC").
Limit(pageSize, (page-1)*pageSize). Limit(pageSize, (page-1)*pageSize).
repoCount, err := x. repoCount, err := x.
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id"). Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id").
Where("(`repository`.owner_id=? AND `repository`.is_private=?)", org.ID, false). Where("(`repository`.owner_id=? AND `repository`.is_private=?)", org.ID, false).
Or("team_repo.team_id IN (?)", strings.Join(base.Int64sToStrings(teamIDs), ",")).
Or(builder.In("team_repo.team_id", teamIDs)).
GroupBy("`repository`.id"). GroupBy("`repository`.id").
Count(&Repository{}) Count(&Repository{})
if err != nil { if err != nil {
Select("`repository`.*"). Select("`repository`.*").
Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id AND `repository`.is_mirror=?", true). Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id AND `repository`.is_mirror=?", true).
Where("(`repository`.owner_id=? AND `repository`.is_private=?)", org.ID, false). Where("(`repository`.owner_id=? AND `repository`.is_private=?)", org.ID, false).
Or("team_repo.team_id IN (?)", strings.Join(base.Int64sToStrings(teamIDs), ",")).
Or(builder.In("team_repo.team_id", teamIDs)).
GroupBy("`repository`.id"). GroupBy("`repository`.id").
OrderBy("updated_unix DESC"). OrderBy("updated_unix DESC").
Find(&repos) Find(&repos)

Завантаження…
Відмінити
Зберегти