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>
--- /dev/null
+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`)
+ });
+ }
+ },
+};
`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 */;