Bug 32330: Add indexes to table background_jobs
authorFridolin Somers <fridolin.somers@biblibre.com>
Wed, 23 Nov 2022 06:49:02 +0000 (20:49 -1000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 19 Dec 2022 14:59:53 +0000 (14:59 +0000)
Table background_jobs should have indexes to optimize queries.

Query on borrowernumber :
mainpage.pl:    my $already_ran_jobs = Koha::BackgroundJobs->search(
mainpage.pl-        { borrowernumber => $logged_in_user->borrowernumber } )->count ? 1 : 0;

Query on status and queue :
misc/background_jobs_worker.pl:        my $jobs = Koha::BackgroundJobs->search({ status => 'new', queue => \@queues });

Test plan :
Run updatedatabase and play with background jobs

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 8755f775990bba513480a3b54372d76395ab2fbe)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
installer/data/mysql/atomicupdate/bug_32330.pl [new file with mode: 0755]
installer/data/mysql/kohastructure.sql

diff --git a/installer/data/mysql/atomicupdate/bug_32330.pl b/installer/data/mysql/atomicupdate/bug_32330.pl
new file mode 100755 (executable)
index 0000000..90d3c9a
--- /dev/null
@@ -0,0 +1,25 @@
+use Modern::Perl;
+
+return {
+    bug_number => "32330",
+    description => "Add indexes to background_jobs table",
+    up => sub {
+        my ($args) = @_;
+        my ($dbh, $out) = @$args{qw(dbh out)};
+        unless ( index_exists('background_jobs', 'borrowernumber') ) {
+            $dbh->do(q{
+                ALTER TABLE `background_jobs` ADD INDEX `borrowernumber` (`borrowernumber`)
+            });
+        }
+        unless ( index_exists('background_jobs', 'queue') ) {
+            $dbh->do(q{
+                ALTER TABLE `background_jobs` ADD INDEX `queue` (`queue`)
+            });
+        }
+        unless ( index_exists('background_jobs', 'status') ) {
+            $dbh->do(q{
+                ALTER TABLE `background_jobs` ADD INDEX `status` (`status`)
+            });
+        }
+    },
+};
index d831006..5960707 100644 (file)
@@ -987,7 +987,10 @@ CREATE TABLE `background_jobs` (
   `enqueued_on` datetime DEFAULT NULL,
   `started_on` datetime DEFAULT NULL,
   `ended_on` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`)
+  PRIMARY KEY (`id`),
+  KEY `borrowernumber` (`borrowernumber`),
+  KEY `queue` (`queue`),
+  KEY `status` (`status`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;