Changes between Initial Version and Version 21 of Ticket #3575


Ignore:
Timestamp:
Jun 30, 2008, 12:50:37 PM (16 years ago)
Author:
Ramiro Morales
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #3575

    • Property Triage Stage UnreviewedAccepted
    • Property Cc sam@… added
    • Property Patch needs improvement set
    • Property Needs tests set
    • Property Owner changed from nobody to Philippe Raoult
    • Property Summary [patch] iexact searches should use LOWER() not ILIKEpostgres backend should optimize iexact searches
  • Ticket #3575 – Description

    initial v21  
    1 Currently queries using field__iexact="blah" translate to field ILIKE 'blah'.  This is really inefficient because ILIKE queries (since they are for pattern matching) cannot be indexed and the whole table must be scanned.  If LOWER(field) = LOWER('blah') is used, it accomplishes the same thing, but an index can be created for LOWER(field) that eliminates the table scan.
     1Currently queries using {{{field__iexact="blah"}}} translate to {{{field ILIKE 'blah'}}}.  This is really inefficient because ILIKE queries (since they are for pattern matching) cannot be indexed and the whole table must be scanned.  If {{{LOWER(field) = LOWER('blah')}}} is used, it accomplishes the same thing, but an index can be created for LOWER(field) that eliminates the table scan.
    22
    33This is a little tricky since the default substitution is only on the operator and the right operand, but this patch adds a column substitution array as well.  This patch should probably be applied across all backends where LOWER() is supported.  Currently it only changes the postgresql_psycopg2 backend.
Back to Top