postgresql常用的索引类型有btree,hash,gin,gist,spgist,brin这六种,btree和hash不同多说,最长用的了,基本都支持,下边针对gin,gist,spgist以及brin这四种,他们所支持的数据类型总结如下:
名字 | 描述 | gin | gist | spgist | brin |
bigint | 有符号 8 字节整数 |
|
|
| √ |
bigserial | 自增八字节整数 |
|
|
| √ |
bit [ (n) ] | 定长位串 |
|
|
| √ |
bit varying [ (n) ] | 变长位串 |
|
|
| √ |
boolean | 逻辑布尔量 (真/假) |
|
|
|
|
box | 平面中的长方形 |
| √ |
| √ |
bytea | 二进制数据("字节数组") |
|
|
| √ |
character varying [ (n) ] | 变长字符串 |
|
| √ | √ |
character [ (n) ] | 定长字符串 |
|
|
| √ |
cidr | IPv4 或者 IPv6 网络地址 |
|
|
| √ |
circle | 平面中的圆 |
| √ |
|
|
date | 日历日期(年,月,日) |
|
|
| √ |
double precision | 双精度浮点数字 |
|
|
| √ |
inet | IPv4 或者 IPv6 网络地址 |
|
|
| √ |
integer | 四字节长有符号整数 |
|
|
| √ |
interval [ (p) ] | 时间间隔 |
|
|
| √ |
line | 平面中的无限长直线 |
|
|
|
|
lseg | 平面中的线段 |
|
|
|
|
macaddr | MAC 地址 |
|
|
| √ |
numeric [ (p, s) ] | 可选精度的准确数字 |
|
|
| √ |
path | 平面中的几何路径 |
|
|
|
|
point | 平面中的点 |
| √ | √ |
|
polygon | 平面中的封闭几何路径 |
| √ |
|
|
real | 单精度浮点数 |
|
|
| √ |
smallint | 有符号两字节整数 |
|
|
| √ |
serial | 自增四字节整数 |
|
|
| √ |
text | 变长字符串 |
|
| √ | √ |
time [ (p) ] [ without time zone ] | 一天里的时间 |
|
|
| √ |
time [ (p) ] with time zone | 一天里的时间,包括时区 |
|
|
| √ |
timestamp [ (p) ] [ without time zone ] | 日期和时间 |
|
|
| √ |
timestamp [ (p) ] with time zone | 日期和时间 |
|
|
| √ |
tsquery | 全文检索查询 |
| √ |
|
|
tsvector | 全文检索文档 | √ | √ |
|
|
txid_snapshot | 用户级别事务ID快照 |
|
|
|
|
uuid | 通用唯一标识符 |
|
|
| √ |
xml | XML数据 |
|
|
|
索引的原理及应用场景请参考PostgreSQL 9种索引的原理和应用场景