数组索引
数组中元素在内存中的存储空间是连续的,在汇编层面可以用基地址(数组名这个变量中存放的就数组中第一个元素的地址)和偏移量(数据类型+下标)进行访问。
数据库索引
避免遍历所有数据页来进行全表扫描,多数查询可以仅扫描少量索引页及数据页。
postgreSQL中的索引
所有索引都属于“从属索引”,即索引在物理上与它所描述的表文件分离;
索引本质上是数据的键值与TID (tuple ID) 间的映射
索引方式
- 唯一索引:不允许出现索引值相同的多个tuple (在创建索引命令中加入UNIQUE关键字)。如果表上定义了一个主键,那pg会自动在主键上创建唯一索引来实现主键约束(此索引也叫主键索引)
- 多属性索引:一个索引定义在多于一个属性上(适用于表的查询模式固定且为组合查询)
- 部分索引:建立在一个表的子集上的索引
- 表达式索引:建立在一个函数或从表中一或多个属性计算出来的标量表达式上
索引类型
- B-Tree:比较查询与范围查询
- Hash:只能处理等于比较
- GiST
- GIN