1.优点
- 创建唯一索引,保证数据的唯一性
- 加快数据的查询速度
- 建立索引可以加快表与表之间的连接
- 为用来排序或者是分组的字段添加索引可以加快分组和排序顺序
2.原则
序号 | 原则 |
---|---|
1 | 选择唯一性索引 |
2 | 为经常需要排序、分组和联合操作的字段建立索引 |
3 | 为常作为查询条件的字段建立索引 |
4 | 限制索引的数目 |
5 | 尽量使用数据量少的索引(如性别字段,一般只有"男"或"女",就没有必须要使用索引) |
6 | 尽量使用前缀来索引 |
7 | 删除不再使用或者很少使用的索引 |
8 | 最左前缀匹配原则,非常重要的原则 |
9 | =和in可以乱序 |
10 | 尽量选择区分度高的列作为索引 |
11 | 索引列不能参与计算,保持列“干净” |
12 | 尽量的扩展索引,不要新建索引 |
3.索引的分类
3.1.B-tree
适合按照顺序存储的数据,比如使用比较运算符的数据, 适合建立一个索引.
如:
- <
- <=
- =
- >=
- BETWEEN
- IN
- IS NULL
- IS NOT NULL
大部分的数据都可以使用该索引
3.2.Hash
用于处理比较简单的等于=符号的比较.
3.3.GiST
广义搜索树。GiST 索引允许构建通用的树结构。GiST 索引可用于索引几何数据类型和全文搜索。
3.4.GIN倒排索引
适合 array, hstore, json 和 range类型的数据, 多个值存储在单个列中时,GIN 索引最有用.
3.5.BRIN
9.5 版本新增的索引类型, 允许在非常大的表上使用索引, 常用于具有线性排序顺序的列,如日期列。
4.索引类型
4.1.单列索引
create index idx_table_name on table_name(name)
4.2.组合索引
create index idx_table_name on table_name(name,comment_info)
4.3.唯一索引
create unique index unique_idx on table_name(table_id)
5.索引的操作
5.1.重命名
alter index old_idx rename to new_idx
5.2.删除索引
drop index old_idx