https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=39920

            Bug ID: 39920
           Summary: do_check_for_previous_checkout should us 'IN' over
                    'OR'
 Change sponsored?: ---
           Product: Koha
           Version: Main
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P5 - low
         Component: Architecture, internals, and plumbing
          Assignee: koha-bugs@lists.koha-community.org
          Reporter: n...@bywatersolutions.com
        QA Contact: testo...@bugs.koha-community.org

When forming the query for previous checkout we have:
 876     # Create (old)issues search criteria
 877     my $criteria = {
 878         borrowernumber => $self->borrowernumber,
 879         itemnumber     => \@item_nos,
 880     };

This forms a query like:
SELECT COUNT( * ) FROM `issues` `me` WHERE ( ( `borrowernumber` = ? AND (
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR
`itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? OR `itemnumber` = ? )
) ):


If we instead do:
itemnumber => { -in => \@item_nos }

We get a query like:
SELECT COUNT( * ) FROM `issues` `me` WHERE ( ( `borrowernumber` = ? AND
`itemnumber` IN ( ?, ?, ?, ? ) ) )

I believe in the past we fond that MySQL has optimizations for IN and it
shortens the query in logs

-- 
You are receiving this mail because:
You are watching all bug changes.
You are the assignee for the bug.
_______________________________________________
Koha-bugs mailing list
Koha-bugs@lists.koha-community.org
https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-bugs
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to