The borrowers search is by default on columns surname, firstname,
othernames and cardnumber.
(See C4::Members::_express_member_find).
Adding DB indexes will really increase the query speed.
This patch adds DB indexes on surname, firstname, othernames (cardnumber
has already an index).
Those indexes must be defined with a size because columns are mediumtext.
Test plan :
Test with mysql client :
mysql> explain select * from borrowers where surname like 'A%';
+----+-------------+-----------+-------+---------------+-------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+-------+---------------+-------------+---------+------+------+-------------+
| 1 | SIMPLE | borrowers | range | surname_idx | surname_idx | 767 | NULL | 395 | Using where |
+----+-------------+-----------+-------+---------------+-------------+---------+------+------+-------------+
=> key show the index is used
Signed-off-by: Mathieu Saby <mathieu.saby@univ-rennes2.fr>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Works as described, changes from updatedatabase and in kohastructure match.
I think deletedborrowers can be left out, as it's not queried when doing
patron searches. Patron deletes still work as expected.
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
KEY `branchcode` (`branchcode`),
KEY `userid` (`userid`),
KEY `guarantorid` (`guarantorid`),
+ KEY `surname_idx` (`surname`(255)),
+ KEY `firstname_idx` (`firstname`(255)),
+ KEY `othernames_idx` (`othernames`(255)),
CONSTRAINT `borrowers_ibfk_1` FOREIGN KEY (`categorycode`) REFERENCES `categories` (`categorycode`),
CONSTRAINT `borrowers_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SetVersion ($DBversion);
}
+$DBversion = "3.15.00.XXX";
+if(CheckVersion($DBversion)) {
+ $dbh->do(q{
+ ALTER TABLE `borrowers`
+ ADD KEY `surname_idx` (`surname`(255)),
+ ADD KEY `firstname_idx` (`firstname`(255)),
+ ADD KEY `othernames_idx` (`othernames`(255))
+ });
+ print "Upgrade to $DBversion done (Bug 11249 - Add db indexes on borrowers names)\n";
+ SetVersion($DBversion);
+}
+
=head1 FUNCTIONS
=head2 TableExists($table)