mirror of
https://github.com/cwinfo/powerdns-admin.git
synced 2024-11-09 23:20:27 +00:00
Fix dashboard MySQL performance with large history table and standard user privileges.
This commit is contained in:
parent
077bbb813c
commit
dc69f00094
@ -166,6 +166,7 @@ def dashboard():
|
|||||||
history = History.query.order_by(History.created_on.desc()).limit(4).all()
|
history = History.query.order_by(History.created_on.desc()).limit(4).all()
|
||||||
elif Setting().get('allow_user_view_history'):
|
elif Setting().get('allow_user_view_history'):
|
||||||
history = db.session.query(History) \
|
history = db.session.query(History) \
|
||||||
|
.with_hint(History, "FORCE INDEX (ix_history_created_on)", 'mysql') \
|
||||||
.join(Domain, History.domain_id == Domain.id) \
|
.join(Domain, History.domain_id == Domain.id) \
|
||||||
.outerjoin(DomainUser, Domain.id == DomainUser.domain_id) \
|
.outerjoin(DomainUser, Domain.id == DomainUser.domain_id) \
|
||||||
.outerjoin(Account, Domain.account_id == Account.id) \
|
.outerjoin(Account, Domain.account_id == Account.id) \
|
||||||
@ -175,9 +176,19 @@ def dashboard():
|
|||||||
db.or_(
|
db.or_(
|
||||||
DomainUser.user_id == current_user.id,
|
DomainUser.user_id == current_user.id,
|
||||||
AccountUser.user_id == current_user.id
|
AccountUser.user_id == current_user.id
|
||||||
)).all()
|
)) \
|
||||||
history_number = len(history) # history.count()
|
.limit(4) \
|
||||||
history = history[:4]
|
.all()
|
||||||
|
history_number = db.session.query(History) \
|
||||||
|
.join(Domain, History.domain_id == Domain.id) \
|
||||||
|
.outerjoin(DomainUser, Domain.id == DomainUser.domain_id) \
|
||||||
|
.outerjoin(Account, Domain.account_id == Account.id) \
|
||||||
|
.outerjoin(AccountUser, Account.id == AccountUser.account_id) \
|
||||||
|
.filter(
|
||||||
|
db.or_(
|
||||||
|
DomainUser.user_id == current_user.id,
|
||||||
|
AccountUser.user_id == current_user.id
|
||||||
|
)).count()
|
||||||
domain_count = db.session.query(Domain) \
|
domain_count = db.session.query(Domain) \
|
||||||
.outerjoin(DomainUser, Domain.id == DomainUser.domain_id) \
|
.outerjoin(DomainUser, Domain.id == DomainUser.domain_id) \
|
||||||
.outerjoin(Account, Domain.account_id == Account.id) \
|
.outerjoin(Account, Domain.account_id == Account.id) \
|
||||||
|
Loading…
Reference in New Issue
Block a user