[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Ludovic Courtès |
Date: |
Fri, 28 Jun 2024 05:21:24 -0400 (EDT) |
branch: main
commit 5de7fa65a2186c424d32686e524de4825f3566cd
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Fri Jun 28 10:56:21 2024 +0200
database: Optimize ‘db-get-evaluation-summary’.
This is a followup to f60e73b7b1e906349d2355d37807514c6e667f0c: since
there are possibly orders of magnitude more rows in ‘Jobs’ than in
‘Evaluations’, select from ‘Jobs’ first.
* src/cuirass/database.scm (db-get-evaluation-summary): Select from
‘Jobs’ first and then from ‘Evaluations’.
---
src/cuirass/database.scm | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm
index 1e1cbf0..b5c1285 100644
--- a/src/cuirass/database.scm
+++ b/src/cuirass/database.scm
@@ -1908,11 +1908,13 @@ SUM(CASE WHEN B.status > 0 THEN 1 ELSE 0 END) as failed,
SUM(CASE WHEN B.status < 0 THEN 1 ELSE 0 END) as scheduled,
SUM(CASE WHEN (B.status > 0 AND B.weather = " (build-weather new-failure) ")\
THEN 1 ELSE 0 END) as newfailures
-FROM Evaluations
-LEFT JOIN Builds as B
-ON B.evaluation = Evaluations.id
-WHERE Evaluations.id = " id
-"GROUP BY Evaluations.id
+FROM Jobs
+LEFT JOIN Builds AS B
+ON B.evaluation = Jobs.evaluation
+LEFT JOIN Evaluations
+ON Jobs.evaluation = Evaluations.id
+WHERE Jobs.evaluation = " id "
+GROUP BY Evaluations.id
ORDER BY Evaluations.id ASC;"))
((id status timestamp checkouttime evaltime
total succeeded failed scheduled newfailures)