标签: gist-index

PostgreSQL:GIN还是GiST索引?

根据我能找到的信息,他们都解决了同样的问题 - 更多深奥的操作,如数组包含和交集(&&,@>,<@等).但是我会对何时使用其中一个(或两者都不可能)的建议感兴趣.
PostgreSQL文档大约有一些这方面的信息:

  • GIN索引查找速度比GiST快三倍
  • GIN索引的构建时间比GiST长大约三倍
  • GIN索引的更新速度比GiST慢十倍
  • GIN索引比GiST大两到三倍

但是,当内存到索引大小比例开始变小(即索引大小变得比可用内存大得多)时,我会特别感兴趣知道是否存在性能影响?我在#postgresql IRC频道上被告知GIN需要将所有索引保留在内存中,否则它将无效,因为与B-Tree不同,它不知道从磁盘读入哪个部分一个特定的查询?问题是:这是真的(因为我也被告知与此相反)?GiST是否有相同的限制?在使用这些索引算法之一时,我应该注意其他限制吗?

postgresql indexing gwt-gin gist-index

38
推荐指数
1
解决办法
2万
查看次数

B-Tree和GiST索引方法之间有什么区别(在PostgreSQL中)?

我最近一直在努力优化我的Postgres数据库,传统上,我只使用B-Tree索引.但是,我在Postgres 8.3文档中看到GiST索引支持非唯一的多列索引.

但是,我不能看出它们之间的实际区别是什么.我希望我的同事们能够解释一下,他们之间的利弊是什么,更重要的是,我之所以使用其中一个的原因是什么?

postgresql indexing b-tree gist-index

17
推荐指数
2
解决办法
1万
查看次数

Postgres hstore:GIN与GiST索引性能

我必须决定是否对hstore列使用GIN或GiST索引.

Postgres的文档状态:

  • GIN索引查找速度比GiST快三倍
  • GIN索引的构建时间比GiST长大约三倍
  • GIN索引的更新速度比GiST慢十倍
  • GIN索引比GiST大两到三倍

我解释它的方式,如果你需要查询很多,请使用GIN,如果你需要更新很多,请使用GiST.

在该测试中,证实了上述GIN相对于GiST的所有三个缺点.但是,除了Postgres文档中的建议外,GIN优于GiST(更快查找)的优势非常小.幻灯片53显示,在测试中,GIN仅比Postgres文档中建议的200%至300%快2%至3%.

哪种信息来源更可靠?为什么?

postgresql indexing gwt-gin gist-index

10
推荐指数
1
解决办法
2546
查看次数

如何在postgresql gist索引类型中使用uuid?

我不能直接使用uist和gist索引

CREATE INDEX idx_leaderboads_values_gist
  ON leaderboard_entry
  USING gist
  (id_leaderboard , value);
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

错误:数据类型uuid没有访问方法"gist"的默认运算符类

提示:您必须为索引指定运算符类,或者为数据类型定义默认运算符类.

postgresql indexing uuid gist-index

8
推荐指数
2
解决办法
3115
查看次数

PostgreSQL 日期范围未正确使用索引

我有一个简单的表,其中有一个带有日期类型的 user_birthday 字段(可以是 NULL 值)

CREATE TABLE users
(
  user_id bigserial NOT NULL,
  user_email text NOT NULL,
  user_password text,
  user_first_name text NOT NULL,
  user_middle_name text,
  user_last_name text NOT NULL,
  user_birthday date,
  CONSTRAINT pk_users PRIMARY KEY (user_id)
)
Run Code Online (Sandbox Code Playgroud)

该字段上定义了一个索引(btree),其规则为 NOT user_birthday IS NULL。

CREATE INDEX ix_users_birthday
  ON users
  USING btree
  (user_birthday)
  WHERE NOT user_birthday IS NULL;
Run Code Online (Sandbox Code Playgroud)

为了跟进另一个想法,我添加了扩展btree_gist并创建了以下索引:

CREATE INDEX ix_users_birthday_gist
  ON glances.users
  USING gist
  (user_birthday)
  WHERE NOT user_birthday IS NULL;
Run Code Online (Sandbox Code Playgroud)

但它也没有影响,因为据我所知,它不用于范围检查。

PostgreSQL 版本为 9.3.4.0 (22) Postgres.app ,问题也存在于 9.3.3.0 (21) …

postgresql indexing date-range b-tree-index gist-index

7
推荐指数
1
解决办法
8968
查看次数