Bug 36033: Add more indexes to table pseudonymized_transactions
Table pseudonymized_transactions contains : KEY `pseudonymized_transactions_ibfk_1` (`categorycode`), KEY `pseudonymized_transactions_borrowers_ibfk_2` (`branchcode`), KEY `pseudonymized_transactions_borrowers_ibfk_3` (`transaction_branchcode`) To improve SQL queries performance, it needs more indexes, specially on itemnumber. Looking at table statistics : KEY `timeidx` (`datetime`), KEY `branch_idx` (`branch`), KEY `type_idx` (`type`), KEY `itemnumber_idx` (`itemnumber`), So index is need on pseudonymized_transactions columns : itemnumber => For join with table items transaction_type => For filter on type issue, return ... datetime => For filter on date, this will help cleanup script Test plan : 1) Run updatedatabase.pl 2) Check indexes are created in table pseudonymized_transactions 3) Run SQL query : describe select * from pseudonymized_transactions join items using(itemnumber) where transaction_type='issue' and datetime < date_sub(curdate(), INTERVAL 30 DAY) => You see the 3 new indexes used in 'possible_keys'. Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
parent
571521ba13
commit
0573d01eaa
|
|
@ -0,0 +1,27 @@
|
|||
use Modern::Perl;
|
||||
|
||||
return {
|
||||
bug_number => "36033",
|
||||
description => "Add more indexes to pseudonymized_transactions",
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ( $dbh, $out ) = @$args{qw(dbh out)};
|
||||
unless ( index_exists( 'pseudonymized_transactions', 'pseudonymized_transactions_items_ibfk_4' ) ) {
|
||||
$dbh->do(
|
||||
q{ALTER TABLE `pseudonymized_transactions` ADD INDEX `pseudonymized_transactions_items_ibfk_4` (`itemnumber`)}
|
||||
);
|
||||
say $out "Added new index on pseudonymized_transactions.itemnumber";
|
||||
}
|
||||
unless ( index_exists( 'pseudonymized_transactions', 'pseudonymized_transactions_ibfk_5' ) ) {
|
||||
$dbh->do(
|
||||
q{ALTER TABLE `pseudonymized_transactions` ADD INDEX `pseudonymized_transactions_ibfk_5` (`transaction_type`)}
|
||||
);
|
||||
say $out "Added new index on pseudonymized_transactions.transaction_type";
|
||||
}
|
||||
unless ( index_exists( 'pseudonymized_transactions', 'pseudonymized_transactions_ibfk_6' ) ) {
|
||||
$dbh->do(
|
||||
q{ALTER TABLE `pseudonymized_transactions` ADD INDEX `pseudonymized_transactions_ibfk_6` (`datetime`)});
|
||||
say $out "Added new index on pseudonymized_transactions.datetime";
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
@ -5307,7 +5307,10 @@ CREATE TABLE `pseudonymized_transactions` (
|
|||
PRIMARY KEY (`id`),
|
||||
KEY `pseudonymized_transactions_ibfk_1` (`categorycode`),
|
||||
KEY `pseudonymized_transactions_borrowers_ibfk_2` (`branchcode`),
|
||||
KEY `pseudonymized_transactions_borrowers_ibfk_3` (`transaction_branchcode`)
|
||||
KEY `pseudonymized_transactions_borrowers_ibfk_3` (`transaction_branchcode`),
|
||||
KEY `pseudonymized_transactions_items_ibfk_4` (`itemnumber`),
|
||||
KEY `pseudonymized_transactions_ibfk_5` (`transaction_type`),
|
||||
KEY `pseudonymized_transactions_ibfk_6` (`datetime`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue