1.什么是数据库索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
但使用索引虽然可以提升数据库的查询效率,但如果系统有较多的增、删、改操作,也会使得系统的性能降低。
2.数据库索引的类型
索引有聚集索引和非聚集索引及覆盖索引,给表上主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,也就是上面说的「平衡树」结构,换句话说,就是整个表就变成了一个索引,也就是所谓的「聚集索引」。
非聚集索引和聚集索引一样, 同样是采用平衡树作为索引的数据结构。索引树结构中各节点的值来自于表中的索引字段, 假如给user表的name字段加上索引 , 那么索引就是由name字段中的值构成,在数据改变时, DBMS需要一直维护索引结构的正确性。如果给表中多个字段加上索引 , 那么就会出现多个独立的索引结构,每个索引(非聚集索引)互相之间不存在关联。
非聚集索引和聚集索引的区别在于, 通过聚集索引可以查到需要查找的数据, 而通过非聚集索引可以查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数据。
「覆盖索引」查询, 也就是平时所说的复合索引或者多字段索引查询。
逻辑分类:单列索引、组合索引、唯一索引、非唯一索引,函数索引。
物理分类:区分索引、非分区索引、B树索引、正向索引、反向索引,位图索引。
3.索引创建的规则
(1) 在经常用作过滤器的字段上建立索引;
(2)在SQL语句中经常进行GROUP BY、ORDER BY的字段上建立索引;
(3)在不同值较少的字段上不必要建立索引,如性别字段;
(4)对于经常存取的列避免建立索引;
(5)用于联接的列(主健/外健)上建立索引;
(6)在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频度来确定;
4.创建索引的SQL语法
创建索引
语法:
CREATE [UNIQUE] INDEX index_name ON table_name(column_list)
[TABLESPACE tablespace_name]
说明:
unique:指定索引列中值必须是唯一的
index_name:索引名
table_name:指定要建立索引的表
col_name:要建立索引的列,可以是多列,那样的索引叫多列索引
table_space_name:索引存储的表空间