本文概述
- 什么是索引
- 数据库索引的重要功能
- PostgreSQL创建索引
- 索引类型
- 单列索引
- 多列索引
- 唯一索引
- PostgreSQL删除索引
- 什么时候应该避免索引
数据库索引类似于书的索引。索引为出现在索引列中的每个值创建一个条目。
数据库索引的重要功能
- 索引使用SELECT查询和WHERE子句可加快数据输出速度, 但使用INSERT和UPDATE语句可降低数据输入速度。
- 你可以创建或删除索引, 而不会影响数据。
- 你可以使用CREATE INDEX语句创建索引, 方法是指定索引名称以及在其上创建索引的表或列名称。
- 你还可以创建一个唯一索引, 类似于UNIQUE约束, 因为该索引可以防止存在索引的列或列组合中的重复条目。
句法:
CREATE INDEX index_name ON table_name;
索引类型 PostgreSQL中有几种索引类型, 例如B树, 哈希, GiST, SP-GiST和GIN等。每种索引类型根据不同的查询使用不同的算法。默认情况下, CREATE INDEX命令使用B树索引。
单列索引 如果索引仅基于一个表列创建, 则称为单列索引。
句法:
CREATE INDEX index_name
ON table_name (column_name);
请参阅以下示例:
我们有一个名为” EMPLOYEES” 的表, 其中包含以下数据:
文章图片
让我们基于” 名称” 列在表” EMPLOYEES” 上创建一个名为” employees_index” 的索引
执行以下查询:
CREATE INDEX employees_index
ON EMPLOYEES (name);
文章图片
在这里, 你可以看到在该表上创建了一个名为” employees_index” 的索引
输出
文章图片
多列索引 如果使用表的多个列创建索引, 则该索引称为多列索引。
句法:
CREATE INDEX index_name
ON table_name (column1_name, column2_name);
让我们在同一张表” EMPLOYEES” 上创建一个名为” multicolumn_index” 的多列索引
执行以下查询:
CREATE INDEX multicolumn_index
ON EMPLOYEES (name, salary);
输出
文章图片
唯一索引 创建唯一索引以获取数据完整性并增强性能。不允许在表中插入重复的值。
句法:
CREATE UNIQUE INDEX index_name
on table_name (column_name);
PostgreSQL删除索引 DROP INDEX方法用于在PostgreSQL中删除索引。如果删除索引, 则它可能减慢或提高性能。
句法:
DROP INDEX index_name;
让我们以一个示例为例, 删除之前创建的名为” multicolumn_index” 的索引。
执行以下查询:
DROP INDEX multicolumn_index;
文章图片
现在, 你可以看到删除/删除了名为” multicolumn_index” 的索引。
【PostgreSQL索引用法】输出
文章图片
什么时候应该避免索引
- 你应该避免在小型表上使用索引。
- 不要为具有频繁, 大量批处理更新或插入操作的表创建索引。
- 索引不应该用于包含大量NULL值的列。
- 不要为经常操作的列创建索引。
推荐阅读
- PostgreSQL LIKE条件
- PostgreSQL的内联接查询
- PostgreSQL IN条件
- PostgreSQL GROUP BY子句
- FunctorApplicative 和 Monad
- Android中使用commons-codec-1.6.jar 进行Base64编解码出现的问题
- Android动画原理-基础篇(认识View)
- 通过 AppiumDriverLocalSerivce 无法启动 appium service 问题
- Android+Struts2实现简单的前后台交互--Android网络编程