metrics: Optimize queries.

Avoid full Builds table scans.

* src/cuirass/metrics.scm (db-average-build-start-time-per-eval,
db-average-build-complete-time-per-eval, db-evaluation-completion-speed):
Rewrite query to avoid full Builds table scans.
This commit is contained in:
Mathieu Othacehe 2020-09-29 17:44:40 +02:00
parent eb8d1b88ad
commit 4d7864c046
No known key found for this signature in database
GPG Key ID: 8354763531769CA6
1 changed files with 3 additions and 6 deletions

View File

@ -103,8 +103,7 @@ SELECT 100 * CAST(SUM(status > 0) as float) / COUNT(*) FROM
SELECT AVG(B.starttime - E.evaltime) FROM
(SELECT id, evaltime
FROM Evaluations WHERE id = " eval ") E
LEFT JOIN
(SELECT id, evaluation, starttime FROM Builds) B
LEFT JOIN Builds as B
ON E.id = B.evaluation and B.starttime > 0
GROUP BY E.id;")))
(and=> (expect-one-row rows) (cut vector-ref <> 0)))))
@ -116,8 +115,7 @@ GROUP BY E.id;")))
SELECT AVG(B.stoptime - E.evaltime) FROM
(SELECT id, evaltime
FROM Evaluations WHERE id = " eval ") E
LEFT JOIN
(SELECT id, evaluation, stoptime FROM Builds) B
LEFT JOIN Builds as B
ON E.id = B.evaluation and B.stoptime > 0
GROUP BY E.id;")))
(and=> (expect-one-row rows) (cut vector-ref <> 0)))))
@ -142,8 +140,7 @@ SELECT
END - E.evaltime) FROM
(SELECT id, evaltime
FROM Evaluations WHERE id = " eval ") E
LEFT JOIN
(SELECT id, evaluation, status, stoptime FROM Builds) B
LEFT JOIN Builds as B
ON E.id = B.evaluation and B.stoptime > 0
GROUP BY E.id;")))
(and=> (expect-one-row rows) (cut vector-ref <> 0)))))