Hi All,

How do you control the order in which columns are added to a multi-column primary key when using the declarative primary_key=True syntax?
How about when one of those columns comes from a mixin?

Context is in the mail below, any help gratefully received!

Chris


-------- Forwarded Message --------
Subject: Re: [GENERAL] performance problems with bulk inserts/updates on tsrange with gist-based exclude constrains
Date:   Mon, 19 Sep 2016 09:41:33 -0700
From:   Jeff Janes <jeff.ja...@gmail.com>
To:     Chris Withers <ch...@simplistix.co.uk>
CC:     pgsql-general <pgsql-gene...@postgresql.org>



On Fri, Sep 16, 2016 at 2:01 AM, Chris Withers <ch...@simplistix.co.uk <mailto:ch...@simplistix.co.uk>> wrote:

   Hi All,

   I have quite a few tables that follow a pattern like this:

             Table "public.my_model"
      Column |       Type        | Modifiers
   --------+-------------------+-----------
      period | tsrange           | not null
      key    | character varying | not null
      value  | integer           |
   Indexes:
         "my_model_pkey" PRIMARY KEY, btree (period, key)
         "my_model_period_key_excl" EXCLUDE USING gist (period WITH &&,
   key WITH =)
   Check constraints:
         "my_model_period_check" CHECK (period <> 'empty'::tsrange)


Try swapping the order of the columns in the exclude constraint. You want the more selective criterion to appear first in the index/constraint. Presumably "key with =" is the most selective, especially if many of your periods are unbounded.

Cheers,

Jeff

--
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