阅读原文请点击;
http://click.aliyun.com/m/23941/
摘要: 标签 PostgreSQL , 索引接口 , 自动创建索引 , 自动选择索引接口 , (btree,hash,bitmap,gin,gist,sp-gist,brin,rum,bloom,zoomdb) 背景 PostgreSQL的索引接口是开放的,支持btree,hash,bitmap,gin,gist,sp-gist,brin,rum,bloom,zoomdb等索引接口。
标签
PostgreSQL , 索引接口 , 自动创建索引 , 自动选择索引接口 , (btree,hash,bitmap,gin,gist,sp-gist,brin,rum,bloom,zoomdb)
背景
PostgreSQL的索引接口是开放的,支持btree,hash,bitmap,gin,gist,sp-gist,brin,rum,bloom,zoomdb等索引接口。因此,不同的数据类型,有不同的索引结构可以选择。
由于索引接口众多(应对不同的场景),一些用户可能无法判断应该选择使用哪种索引方法。
虽然我在很多文章中有提到过索引的原理以及选择方法,但是一切为懒人服务,所以我们看看如何把创建索引变得更简单,让数据库自动选择最合适的索引方法。
如果你想了解各种索引的用途,你也可以参考一下手册或者以下CASE的文章,了解索引的原理和应用场景。
《懒人推动社会进步 - 多列聚合, gin与数据分布(选择性)》
语法
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON table_name [ USING method ]
( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
[ WITH ( storage_parameter = value [, ... ] ) ]
[ TABLESPACE tablespace_name ]
[ WHERE predicate ]
索引选择的要素
必要约束
1、如果用户要创建 unique 索引,那么只能选择btree索引接口。
2、某些类型指支持某类索引接口,例如数组类型、全文检索类型,只支持GIN索引。GIS类型只支持gist或sp-gist索引。
选择性
如果某个类型支持多种索引接口,那么到底选择哪种接口比较好呢?
和数据的选择性是有关系的。
1、选择性差(例如1亿记录,有100-10万 条唯一值),建议使用gin或bitmap索引。
2、选择性好(例如1亿记录,有8000万唯一值),建议使用btree或hash索引。
数据分布
1、对于数据值与行号呈现较强的线性相关特性时,加入用户没有按该列顺序输出的需求。则建议使用brin块级索引。
2、当列长度超过数据块的1/3时,不能使用btree,建议使用hash索引。或者使用表达式btree索引,建少索引entry的大小。
查询需求
如果某个类型支持多种索引接口,那么到底选择哪种接口比较好呢?
和数据的查询需要也是有关系的。
1、范围查询、排序查询、等值查询
阅读原文请点击;
http://click.aliyun.com/m/23941/
分享到:
相关推荐
4.2020-开年标杆班-day06-MySQL-聚簇索引BTREE结构 5.2020-开年标杆班-day06-MySQL-辅助索引BTREE结构 6.2020-开年标杆班-day06-MySQL-辅助索引细分 7.2020-开年标杆班-day06-MySQL-联合索引应用 8.2020-开...
- 索引 - 数据结构 - BTREE8. 索引 - 数据结构 - B+TREE9. MySQL 高级 - 索引 - 索引分类10. MySQL 高级 - 索引 - 索引语法11. MySQL 高级 - 索引 - 索引设计原则12. MySQL 高级 - 视图 - 概述13. - 视图 - 创建及...
07.索引 - 数据结构 - BTREE 08.索引 - 数据结构 - B+TREE 09.索引 - 索引分类 10.索引 - 索引语法 11.索引 - 索引设计原则 12.视图 - 概述 13.视图 - 创建及修改视图 14.视图 - 查看及删除视图 15.存储过程 - 概述 ...
MySQL 高级 - 索引 - 数据结构 - BTREE P7 day01-08. MySQL 高级 - 索引 - 数据结构 - B+TREE P8 day01-09. MySQL 高级 - 索引 - 索引分类 P9 day01-10. MySQL 高级 - 索引 - 索引语法 P10 day01-11. MySQL 高级 - ...
MySQL 高级 - 索引 - 数据结构 - BTREE P7 day01-08. MySQL 高级 - 索引 - 数据结构 - B+TREE P8 day01-09. MySQL 高级 - 索引 - 索引分类 P9 day01-10. MySQL 高级 - 索引 - 索引语法 P10 day01-11. MySQL 高级 - ...
MySQL 高级 - 索引 - 数据结构 - BTREE.avi │ │ 08. MySQL 高级 - 索引 - 数据结构 - B+TREE.avi │ │ 09. MySQL 高级 - 索引 - 索引分类.avi │ │ 10. MySQL 高级 - 索引 - 索引语法.avi │ │ 11. MySQL 高级...
本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。
btree 索引btree 索引btree 索引
Oracle-Btree索引,索引的ppt
2、存储结构正如其名,这类索引的物理文件大多就是以BTree结构来存储的,但会有不同的存储引擎在使用BTree索引时,对存储结构稍作修改 2、Hash索引的弊端
MySQL Hash索引和B-Tree索引的区别究竟在哪里呢?相信很多人都有这样的疑问,下文对两者的区别进行了详细的分析,需要的朋友可以参考下
4.Context.h:策略方法的实现 5.mian.cpp:使用用例,因为我测试的时候windows和linux都有,为使中文不乱码,我在main写的简单的英语说明 不足之处的改进 对于数据库来说,目前的BTree操作有两个大问题,一个是吃内存...
BTree-Real-Estate-:使用Django Framework构建的完全成熟的房地产Web应用程序
BTree,B-Tree,B+Tree,BTree都是什么.doc
数据结构关于二叉树的建立遍历以及应用二叉树进行编解码 实验要求 必做部分 1. 小明会按照前序的方式输入一棵二叉树。例如,输入$ACG##H##D##BE#I##F##的话,代表了下面这棵树: 2. 请分别按照前序、中序、后序...
实现m阶B_树 (2)将线性表中的键值插入到B_树中(即建立索引); (3)当删除和插入数据到线性表时,同时维护其索引B_树。 (4)可根据所给键值范围,输出该范围的所有键值
2-9 Hash算法与Hash索引 3-1 explain介绍 3-2 explian中id属性介绍 3-3 explain中select_type属性介绍 3-4 explain中type属性介绍 3-5 explain中type属性实例 3-6 explain中possible_keys与key区别 3-7 索引使用规则
主要介绍了Mysql中的Btree与Hash索引比较,本文起讲解了B-Tree 索引特征、Hash 索引特征等内容,需要的朋友可以参考下
sqlite-btree sqlite-btree sqlite-btree
BtreeVsBitMapIndex Btree 与 BitMap 索引的比较