Bug 11249: Add Db indexes on borrowers names

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>
This commit is contained in:
Fridolyn SOMERS 2013-11-14 14:29:51 +01:00 committed by Galen Charlton
parent 6cf065da5e
commit 19b5c9b4ce
2 changed files with 15 additions and 0 deletions

View file

@ -271,6 +271,9 @@ CREATE TABLE `borrowers` ( -- this table includes information about your patrons
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;

View file

@ -7831,6 +7831,18 @@ if ( CheckVersion($DBversion) ) {
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)