Bug 13740: Remove the NOT NULL clause in GetBorrowersToExpunge
authorJonathan Druart <jonathan.druart@biblibre.com>
Fri, 20 Feb 2015 15:23:50 +0000 (16:23 +0100)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Tue, 31 Mar 2015 13:54:23 +0000 (10:54 -0300)
commitb721b6f9f3b8eb65a929ca0605216b58f8f87996
tree162d4145e5278c1974ae2678e22db40e0cbbdd26
parenteb2d7db6555abf1a52f8ce96c0370ec09c32bca8
Bug 13740: Remove the NOT NULL clause in GetBorrowersToExpunge

C4::Borrowers::GetBorrowersToExpunge should not use a "NOT IN", it is
not efficient at all.

With only 1 guarantor and more than 136k patrons, the not in clause in
this subroutine takes ages:
mysql> select count(*) FROM   borrowers where  borrowernumber NOT IN
(SELECT guarantorid FROM borrowers WHERE guarantorid IS NOT NULL AND
guarantorid <> 0) ;
[...]

not ended after 5min

With the query modified by this patch, the results come after 1 sec :)

Test plan:
Verify the delete_patrons.pl cronjob or the cleanborrowers tools work as
before.
Especially with guarantors.

Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Signed-off-by: Koha Team AMU <koha.aixmarseille@gmail.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
C4/Members.pm