Add some missing indexes that should make queries significantly faster

This commit is contained in:
Joseph Schorr 2019-02-14 17:21:01 -05:00
parent ea9707b969
commit 331a7a640b
3 changed files with 68 additions and 3 deletions

View file

@ -464,7 +464,7 @@ class BaseModel(ReadSlaveModel):
class User(BaseModel):
uuid = CharField(default=uuid_generator, max_length=36, null=True)
uuid = CharField(default=uuid_generator, max_length=36, null=True, index=True)
username = CharField(unique=True, index=True)
password_hash = CharField(null=True)
email = CharField(unique=True, index=True,
@ -728,7 +728,7 @@ class RepositoryPermission(BaseModel):
class PermissionPrototype(BaseModel):
org = QuayUserField(index=True, backref='orgpermissionproto')
uuid = CharField(default=uuid_generator)
uuid = CharField(default=uuid_generator, index=True)
activating_user = QuayUserField(allows_robots=True, index=True, null=True,
backref='userpermissionproto')
delegate_user = QuayUserField(allows_robots=True, backref='receivingpermission',
@ -769,7 +769,7 @@ class DisableReason(BaseModel):
class RepositoryBuildTrigger(BaseModel):
uuid = CharField(default=uuid_generator)
uuid = CharField(default=uuid_generator, index=True)
service = ForeignKeyField(BuildTriggerService)
repository = ForeignKeyField(Repository)
connected_user = QuayUserField()
@ -923,6 +923,8 @@ class RepositoryTag(BaseModel):
read_slaves = (read_slave,)
indexes = (
(('repository', 'name'), False),
(('repository', 'lifetime_start_ts'), False),
(('repository', 'lifetime_end_ts'), False),
# This unique index prevents deadlocks when concurrently moving and deleting tags
(('repository', 'name', 'lifetime_end_ts'), True),
@ -1462,6 +1464,9 @@ class Tag(BaseModel):
(('repository', 'name', 'hidden'), False),
(('repository', 'name', 'tag_kind'), False),
(('repository', 'lifetime_start_ms'), False),
(('repository', 'lifetime_end_ms'), False),
# This unique index prevents deadlocks when concurrently moving and deleting tags
(('repository', 'name', 'lifetime_end_ms'), True),
)