diff --git a/src/Modules/Db.py b/src/Modules/Db.py index 88a18f77dc280cc7d14e4ed40a38e0908aab717a..8e3a1108bb330a3b6e37caf79eb80a6b761bd77b 100644 --- a/src/Modules/Db.py +++ b/src/Modules/Db.py @@ -1487,12 +1487,19 @@ class Batch(Db) : @rtype: triple """ + # To optimize this query, make sure to have two indices on the + # table: + # - UNIQUE INDEX (QueueID) + # - INDEX (JobID, QueueID) statement = """ SELECT QueueID, Input, Flags - FROM BatchQueue - WHERE JobID = %s - ORDER BY QueueID - LIMIT 1; + FROM BatchQueue + WHERE QueueID = ( + SELECT MIN(QueueID) + FROM BatchQueue + GROUP BY JobID + HAVING JobID = %s + ); """, jobID results = self.query(statement)