对PostgreSQL数据库的hstore类型建立GisT索引的实验

磨砺技术珠矶,践行数据之道,追求卓越价值
回到上一级页面:PostgreSQL基础知识与基本操作索引页    回到顶级页面:PostgreSQL索引页
[作者 高健@博客园  [email protected]]

 

由于数据少,执行计划中没有使用Index Scan

postgres=# CREATE TABLE items ( postgres(# itemid serial NOT NULL PRIMARY KEY, postgres(# itemname text NOT NULL, postgres(# tags hstore); NOTICE: CREATE TABLE will create implicit sequence "items_itemid_seq" for serial column "items.itemid" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "items_pkey" for table "items" CREATE TABLE postgres=# postgres=# INSERT INTO items (itemname, tags) VALUES ('item1', 'color => red, category => stuff'); INSERT 0 1 postgres=# postgres=# INSERT INTO items (itemname, tags) VALUES ('item2', 'color => green, category => manager'); INSERT 0 1 postgres=# postgres=# CREATE INDEX hstoreidx ON items USING gist(tags); CREATE INDEX postgres=# postgres=# SELECT itemname FROM items WHERE tags @> 'color=>red'; itemname ----------
 item1 (1 row) postgres=# SELECT itemname FROM items WHERE tags @> 'color=>green'; itemname ----------
 item2 (1 row) postgres=# SELECT itemname FROM items WHERE tags @> 'color=>blue'; itemname ----------
(0 rows) postgres=# EXPLAIN  SELECT itemname FROM items WHERE tags @> 'color=>red'; QUERY PLAN                      
------------------------------------------------------
 Seq Scan on items  (cost=0.00..1.02 rows=1 width=32) Filter: (tags @> '"color"=>"red"'::hstore) (2 rows) postgres=# postgres=# SELECT itemname FROM items WHERE tags ? 'color'; itemname ----------
 item1 item2 (2 rows) postgres=# EXPLAIN SELECT itemname FROM items WHERE tags ? 'color'; QUERY PLAN                      
------------------------------------------------------
 Seq Scan on items  (cost=0.00..1.02 rows=1 width=32) Filter: (tags ? 'color'::text) (2 rows) postgres=# 

 

[作者 高健@博客园  [email protected]
回到上一级页面:PostgreSQL基础知识与基本操作索引页    回到顶级页面:PostgreSQL索引页
磨砺技术珠矶,践行数据之道,追求卓越价值

你可能感兴趣的:(PostgreSQL)