btree_gist为数据类型
  int2、int4、int8、float4、
  float8、numeric、timestamp with time zone、
  timestamp without time zone、time with time zone、
  time without time zone、date、interval、
  oid、money、char、
  varchar、text、bytea、bit、
  varbit、macaddr、macaddr8、inet、cidr、uuid以及所有enum类型提供实现B树等效行为的GiST索引操作符类。
 
通常,这些操作符类不会比等效的标准 B 树索引方法更好,并且它们缺少标准 B 树代码的一个主要特性:强制一致性的能力。但是,如下文所述,它们提供了在一个 B 树索引中没有的一些其他特性。另外,当需要一个多列 GiST 索引,并且其某些列的数据类型只在 GiST 中是可索引的而其他列是简单数据类型时,这些操作符类就有用了。最后,这些操作符可以用于 GiST 测试以及作为开发其他 GiST 操作符类的基础。
  除了典型的 B 树搜索操作符之外,btree_gist也为<>(“不等于”)提供了索引支持。这可能与下文描述的排他约束组合在一起产生作用。
 
  另外,对于那些具有自然距离度量的数据类型,btree_gist定义了一个距离操作符<->,并且为使用这个操作符的最近邻搜索提供了 GiST 索引支持。距离操作符还提供给了:int2、int4、 int8、float4、
  float8、timestamp with time zone、
  timestamp without time zone、
  time without time zone、date、interval、
  oid和money。
 
   使用btree_gist代替btree的简单例子:
  
CREATE TABLE test (a int4); -- create index CREATE INDEX testidx ON test USING GIST (a); -- query SELECT * FROM test WHERE a < 10; -- nearest-neighbor search: find the ten entries closest to "42" SELECT *, a <-> 42 AS dist FROM test ORDER BY a <-> 42 LIMIT 10;
使用一个排他约束来强制规则:一个动物园里的一个笼子只能装一种动物:
=> CREATE TABLE zoo ( cage INTEGER, animal TEXT, EXCLUDE USING GIST (cage WITH =, animal WITH <>) ); => INSERT INTO zoo VALUES(123, 'zebra'); INSERT 0 1 => INSERT INTO zoo VALUES(123, 'zebra'); INSERT 0 1 => INSERT INTO zoo VALUES(123, 'lion'); ERROR: conflicting key value violates exclusion constraint "zoo_cage_animal_excl" DETAIL: Key (cage, animal)=(123, lion) conflicts with existing key (cage, animal)=(123, zebra). => INSERT INTO zoo VALUES(124, 'lion'); INSERT 0 1
   Teodor Sigaev(<teodor@stack.net>)、
   Oleg Bartunov(<oleg@sai.msu.su>)、
   Janko Richter(<jankorichter@yahoo.de>)以及
   Paul Jungwirth(<pj@illuminatedcomputing.com>)。详见
   http://www.sai.msu.su/~megera/postgres/gist/。