Re: index unique
От | Thomas Kellerer |
---|---|
Тема | Re: index unique |
Дата | |
Msg-id | 99cf7fa9-9788-c576-cb49-3aec780168f6@gmx.net обсуждение исходный текст |
Ответ на | index unique (Marc Millas <marc.millas@mokadb.com>) |
Ответы |
Re: index unique
Re: index unique |
Список | pgsql-general |
Marc Millas schrieb am 03.06.2021 um 22:51: > on a table we need a primary key and to get a unique combinaison, we need 3 columns of that table: > 1 of type integer, > 1 of type text, > 1 of type geometry > > creating the PK constraint doesn work: (even with our current small data set) > ERROR: index row size 6072 exceeds btree version 4 maximum 2704 for index "xxx_spkey" > DETAIL: Index row references tuple (32,1) in relation "xxx". > HINT: Values larger than 1/3 of a buffer page cannot be indexed. > Consider a function index of an MD5 hash of the value, or use full text indexing. > > ok. we can do this. > but if so, we need to create a gist index on the geometry column to do any topology request. > so 2 indexes containing this single column. > > if we install extension btree_gist, no pb to create an index on all 3 columns. > but as gist does not support unicity, this index cannot be used for the PK. > > OK, we may try to use a function to get the bounding box around the geometry objects and use the result into a btree index........ > > Any idea (I mean: another idea !) to tackle this ? > Or any critic on the "solution" ?? How do you define the "uniqueness" of the geometry? GIST can support "uniqueness" through exclusion constraints. It's not a primary key, so you can't create foreign keys referencing that table, but it does ensure uniqueness (In fact the "normal" unique indexes are essentially a special case of exclusion constraints) create index on the_table using gist (int_column with =, text_col with =, geometry_col with &&); Replace the && operator with whatever is appropriate for your use case. Thomas
В списке pgsql-general по дате отправления: