changeset 2463:b426ecc30319 codereview

Added some DB indexes to optimize queries
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 15 Jun 2012 00:24:14 +0200
parents 1f9c467e01eb
children c5e04fa85403
files rhodecode/model/db.py
diffstat 1 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/model/db.py	Fri Jun 15 00:08:06 2012 +0200
+++ b/rhodecode/model/db.py	Fri Jun 15 00:24:14 2012 +0200
@@ -428,8 +428,9 @@
 class UserEmailMap(Base, BaseModel):
     __tablename__ = 'user_email_map'
     __table_args__ = (
+        Index('uem_email_idx', 'email'),
         UniqueConstraint('email'),
-        {'extend_existing': True, 'mysql_engine':'InnoDB',
+        {'extend_existing': True, 'mysql_engine': 'InnoDB',
          'mysql_charset': 'utf8'}
     )
     __mapper_args__ = {}
@@ -438,7 +439,7 @@
     user_id = Column("user_id", Integer(), ForeignKey('users.user_id'), nullable=True, unique=None, default=None)
     _email = Column("email", String(length=255, convert_unicode=False, assert_unicode=None), nullable=True, unique=False, default=None)
 
-    user = relationship('User')
+    user = relationship('User', lazy='joined')
 
     @validates('_email')
     def validate_email(self, key, email):
@@ -976,6 +977,7 @@
 class Permission(Base, BaseModel):
     __tablename__ = 'permissions'
     __table_args__ = (
+        Index('p_perm_name_idx', 'permission_name'),
         {'extend_existing': True, 'mysql_engine': 'InnoDB',
          'mysql_charset': 'utf8'},
     )
@@ -1323,6 +1325,7 @@
 class ChangesetComment(Base, BaseModel):
     __tablename__ = 'changeset_comments'
     __table_args__ = (
+        Index('cc_revision_idx', 'revision'),
         {'extend_existing': True, 'mysql_engine': 'InnoDB',
          'mysql_charset': 'utf8'},
     )
@@ -1362,6 +1365,8 @@
 class ChangesetStatus(Base, BaseModel):
     __tablename__ = 'changeset_statuses'
     __table_args__ = (
+        Index('cs_revision_idx', 'revision'),
+        Index('cs_version_idx', 'version'),
         UniqueConstraint('repo_id', 'revision', 'version'),
         {'extend_existing': True, 'mysql_engine': 'InnoDB',
          'mysql_charset': 'utf8'}
@@ -1458,6 +1463,7 @@
 class Notification(Base, BaseModel):
     __tablename__ = 'notifications'
     __table_args__ = (
+        Index('notification_type_idx', 'type'),
         {'extend_existing': True, 'mysql_engine': 'InnoDB',
          'mysql_charset': 'utf8'},
     )