索引类型
没学好索引类型,专来记下笔记,我不能忘记 11.2. 索引类型 PostgreSQL 提供了好几种索引类型∶ B-tree,R-tree,GiST 和散列.每种索引类型都比较适合某些特定的查询类型, 因为它们用了不同的算法. 缺省时, CREATE INDEX 命令将创建一个 B-tree 索引,这种索引适合于大多数常见的情形。 B-tree 可以处理那些可以按照某种顺序存储的数据的等于和范围查询。 特别是在一个建立了索引的列涉及到使用下列操作符之一进行比较的时候, PostgreSQL 的查询规划器都会考虑使用 B-tree 索引∶ <,<=,=,>=,> 优化器也会把 B-tree 所以用于涉及模式匹配操作符 LIKE, ILIKE,~,和 ~* 的查询,条件是模式锚接在字串的开头,比如, col LIKE 'foo%' 或者 col ~ '^foo', 而不是 col LIKE '%bar'。 但是,如果你的服务器不适用 C 区域,那么你需要用一个特殊的操作符表创建索引。 参阅下面的 Section 11.6。 R-tree 索引特别适合于空间数据.要创建一个 R-tree 索引, 使用下面形式的命令 CREATE INDEX name ON table USING RTREE (column);
当一个索引了的列涉及到使用下列操作符之一进行比较的时候, PostgreSQL 的查询规划器都会考虑使用 R-tree 索引∶ <<,&<,&>,>>,@,~=,&& (请参考 Section 9.9 获取这些操作符的含义.) 散列(hash)索引只能处理简单的等于比较。 当一个索引了的列涉及到使用 = 操作符进行比较的时候, 查询规划器会考虑使用散列索引。 下面的命令用于创建散列索引∶ CREATE INDEX name ON table USING HASH (column);
B-tree 索引是一个 Lehman-Yao 高并发 B-tree 的实 现。R-tree 索引用 Guttman 的二次分割算法实现了标准的 R-tree。 hash(散列)索引是 Litwin 的线性散列的一个实现。 我们单独的列出这些所用的算法是要表明所有这些索引方法都是完全动态的并且不必进行周期性的优化 (例如,象静态散列算法常见的那样)。
http://www.pgsqldb.org/pgsqldoc-7.4/indexes-types.html
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |