]> git.evergreen-ils.org Git - working/Evergreen.git/commit
Speed up sorted-related-holds query
authorMike Rylander <mrylander@gmail.com>
Fri, 8 Feb 2013 15:15:39 +0000 (10:15 -0500)
committerBen Shum <bshum@biblio.org>
Wed, 27 Feb 2013 18:03:55 +0000 (13:03 -0500)
commit5fb92d384aeca7ed0e8b1c34d97447a35f00f256
treebaa77b33aedcf7626fbe55b69655e4ce85c9bd15
parenta605e9beb482bcdc8eee54c91b73125ebbde2f01
Speed up sorted-related-holds query

In several interfaces, we use a server side method which gathers statistics
about a hold: related holds, it's position in the (approximate) queue, the
estimated wait time, etc.  Within this method is a relatively complicated
json_query that returns the list of related, (FIFO-ish) sorted holds -- ones
that could be filled by a copy which could fill the hold in question.  This
commit restructures that query so as to make it faster when the list of
related holds is large, by removing duplicate (cartesian product, actually)
hold ids that were being fed into an INNER JOIN clause.

Testing shows a speed increase of 4x for related-hold queue of around 675
holds [~2s -> ~0.5s] on a relatively large Evergreen installation,
appropriately tuned.  The speed improvement gets larger with longer queues.
There is no observed decrease in speed for smaller queue sizes.

Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Ben Shum <bshum@biblio.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm