PostgreSQL hstore 列性能提升案例

PostgreSQL 支持hstore 来存放KEY->VALUE这类数据, 其实也类似于ARRAY或者JSON类型。  要高效的使用这类数据,当然离不开高效的索引。我们今天就来看看两类不同的索引对于同一种检索请求的性能问题。

假如我们有这样一个原始表,基于str1字段有一个BTREE索引。

t_girl=# \d status_check;
          Table "ytt.status_check"
 Column |        Type          | Modifiers
--------+-----------------------+-----------
 is_yes | boolean              | not null
 str1  | character varying(20) | not null
 str2  | character varying(20) | not null
Indexes:
    "index_status_check_str1" btree (str1)

里面有10W条记录。 数据大概如下,

t_girl=# select * from status_check limit 2;
 is_yes | str1 |        str2       
--------+------+----------------------
 f      | 0    | cfcd208495d565ef66e7
 t      | 1    | c4ca4238a0b923820dcc
(2 rows)


Time: 0.617 ms
t_girl=#

存放hstore类型的status_check_hstore 表结构,基于str1_str2字段有一个GIST索引。

 Table "ytt.status_check_hstore"
  Column  |  Type  | Modifiers
-----------+---------+-----------
 is_yes    | boolean |
 str1_str2 | hstore  |
Indexes:
    "idx_str_str2_gist" gist (str1_str2)

 

t_girl=# select * from status_check_hstore limit 2;
 is_yes |          str1_str2         
--------+-----------------------------
 f      | "0"=>"cfcd208495d565ef66e7"
 t      | "1"=>"c4ca4238a0b923820dcc"
(2 rows)


Time: 39.874 ms

------------------------------------华丽丽的分割线------------------------------------

------------------------------------华丽丽的分割线------------------------------------

PostgreSQL 的详细介绍:请点这里
PostgreSQL 的下载地址:请点这里

相关推荐