Apologies, I can't think of a better way to phrase this.  This doesn't seem 
to fall into the typical CustomType or Augmenting A Column concepts.

I'm not sure how/if SqlAlchemy can do this

Here is my situation-

I have a handful of tables in PostgreSQL where tables contain columns that 
have ancillary "keys" that are a 32-64 character hash.  Basically public 
facing UIDs.

The columns have their own index, which speeds things up a lot... but still 
they can be not-as-great.

I did some searching online to better optimize it, and I found a decent 
trick on the Instagram engineering blog -- using a partial index on the 
column

     create index speedy_idx_foo_bar_8 on foo(substr(bar,0,8);

this index uses a fraction of the diskspace, and tends to perform the same, 
if not better, than a full index search.

there's a caveat though... in order to use the index, queries have use the 
substing function -- otherwise the planner won't care to use it.  

     - select * from foo where bar = %(bar)s ;
     + select * from foo where bar = %(bar)s and substr(bar,0,8) = 
%(bar_substring)s ;
     + select * from foo where bar = %(bar)s and substr(bar,0,8) = 
substr(%(bar_substring)s,0,8) ;

     - select * from foo where bar in ( %(bar_1)s , %(bar_2)s );
     + select * from foo where bar in ( %(bar_1)s , %(bar_2)s ) AND 
subst(bar,0,8) in ( %(bar_substr_1)s , %(bar_substr_2)s );
     + select * from foo where bar in ( %(bar_1)s , %(bar_2)s ) AND 
subst(bar,0,8) in ( substr(%(bar_1)s,0,8) , substr(%(bar_2)s,0,8) );

I'm doing all this manually now -- which isn't a big deal ; but I'm 
wondering if there's a better way to handle this within SQLalchemy.  That 
would hopefully let me migrate this type of stuff into the 'model' and I'd 
be able to handle joins/etc as well.  

has anyone out there tried to do stuff like this before?

-- 
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to