On Thursday, March 31, 2016 at 9:43:11 AM UTC-4, Mike Bayer wrote:
>
> this is more of a Postgresql optimization question so I dont have any 
> insight on that. 
>

FWIW, I generally handle these types of "optimize postgres" queries using a 
function to apply the filter - like this: 

    def filter_Table_field_a(query, value, optimize=False):
        """Table.field_a has a partial index on a substring of field_a
            it will only be consulted by the planner if used in a query."""
        query = query.filter(model.core.Table.field_a = value, )
        if optimize:
            query = query.filter(func.substr(model.core.Table.field_a, 0, 
5)) == value[:4], )
        return query


    def filter_Table_field_b(query, value, optimize=False):
        """Table.field_b has a uniqueindex on a lower(field_b);
            it will only be consulted by the planner if used in a query."""
        query = query.filter(model.core.Table.field_b = value, )
        if optimize:
            query = query.filter(func.lower(model.core.Table.field_b)) == 
value.lower(), )
        return query

q = s.query(TableA)
q = filter_Table_field_b(q, 'hello', optimize=True)

I toggle the optimization, because some queries will perform better with it 
off.  

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to