[perf-web] models.py: Use select_related to optimize values queries
- From: Owen Taylor <otaylor src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [perf-web] models.py: Use select_related to optimize values queries
- Date: Tue, 29 Jul 2014 20:19:08 +0000 (UTC)
commit 060ddb82b820260e7f699f087cdd5bd5eb2e5924
Author: Owen W. Taylor <otaylor fishsoup net>
Date: Tue Jul 29 22:15:40 2014 +0200
models.py: Use select_related to optimize values queries
When we get a list of values, we want to get the metric, report,
and target objects as well, so use select_related(). This trades
off returning more data for each row for less queries.
(Potentially it might make sense to select_related only for report
and let individual queries be used for report and target.)
metrics/models.py | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/metrics/models.py b/metrics/models.py
index e1a7f4b..d56f660 100644
--- a/metrics/models.py
+++ b/metrics/models.py
@@ -34,7 +34,8 @@ class Value(models.Model):
if target is not None:
qs = qs.filter(report__target__name=target.name)
- return qs.order_by('metric', 'report__target', 'report__pull_time')
+ return qs.order_by('metric', 'report__target', 'report__pull_time') \
+ .select_related('report__target', 'metric')
def resummarize():
# We give machines a 6 hours grace period to update results
@@ -185,7 +186,8 @@ class Summary(models.Model):
if target is not None:
qs = qs.filter(target__name=target.name)
- return qs.order_by('target', 'metric', 'time')
+ return qs.order_by('target', 'metric', 'time') \
+ .select_related('report__target', 'metric')
class SummaryHour6(Summary):
@staticmethod
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]