内容导航:
- 浅谈数据库索引
- 数据库索引的作用
一、浅谈数据库索引数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库中表的数据 。索引的实现通常使用B树和变种的B+树(mysql常用的索引就是B+树) 。
为表创建索引的好处:
- 通过创建索引,可以在查询的过程中,提高系统的性能 。
- 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性 。
- 在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间 。
- 增加了数据库的存储空间 。
- 在插入和修改数据时要花费较多的时间(因为索引也要随之变动) 。
索引按逻辑角度分可分为:
1.普通索引:最基本的索引,它没有任何限制 。它有以下几种创建方式:
直接创建:
CREATE INDEX indexName ON mytable(username(length));
注意:如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length 。
修改表结构创建:
ALTER mytable ADD INDEX [indexName] ON (username(length))
创建表的时候直接指定索引:
CREATE TABLE mytable(ID INT NOT NULL,username VARCHAR(16) NOT NULL,INDEX [indexName] (username(length)));
删除索引:
DROP INDEX [indexName] ON mytable;
2.唯一索引:它与普通索引类似,不同之处:索引列的值必须唯一,但允许有空值,创建时加上关键字UNIQUE 。如果是组合索引,则列值的组合必须唯一 。它有以下几种创建方式:
直接创建(关键字 UNIQUE):
CREATE UNIQUE INDEX indexName ON mytable(username(length))
修改表结构时创建(UNIQUE):
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
创建表的时候直接指定唯一索引(UNIQUE):
CREATE TABLE mytable(ID INT NOT NULL,username VARCHAR(16) NOT NULL,UNIQUE [indexName] (username(length)));
3.主键索引:它是一种特殊的唯一索引,不允许有空值 。一般是在建表的时候同时创建主键索引 。
创建表时创建索引:
CREATE TABLE C(ID INT UNSIGNED NOT NULL auto_increment,username VARCHAR(16) NOT NULL,PRIMARY KEY(ID));
也可后期追加创建:
alter table mytable add primary key(列名)
4.组合索引:
索引按物理存储角度分可分为:
- 聚集索引:表记录的排列顺序和索引的排列顺序一致,所以查询效率快,只要找到第一个索引值记录,其余连续性的记录在物理上一样连续存放 。聚集索引的缺点就是修改慢,因为为了使表记录和索引的排列顺序一致,所以在插入记录的时候会对数据页重新排序 。
- 非聚集索引:表记录和索引的排列顺序不一定一致,两种索引都采用B+树的结构,非聚集索引的叶子层并不和实际数据页相重叠,而采用叶子层包含一个指向表记录的指针 。非聚集索引层次多,不会造成数据重排 。
- 在经常需要查询的列上创建索引 。
- 在主键的列上创建索引 。
- 在表连接的列上创建索引,如一些外键,可以加快连接的速度
- 在限定范围进行搜索的列上创建索引 。
- 在经常需要排序的列上创建索引 。
- 在where子句条件上面的列上创建索引 。
- 查询中很少用到的列不应加索引 。
- 对于那些具有很少数据值的列不应加索引,比如客户表的性别列 。
- bit数据类型的列不应加索引 。
- 类型是数据量相当大的列不应加索引,如数据类型是text,image 。
- 修改性能的要求远远大于搜索性能时不应加索引 。
- 浅谈邓稼先和杨振宁 邓稼先与杨振宁
- 浅谈电感器及其用途 电感有什么用
- 职场风水禁忌是什么 职场风水讲究(图文)
- 浅谈虹吸和倒虹吸 什么是倒虹吸原理
- 七 三国杀浅谈
- 【爱历史】浅谈终极恶女与扑克牌中四位君主的联系
- Mysql索引 索引有什么用
- Redmi k30pro另类的摄影巅峰浅谈30mm长焦微距的拍摄效果
- 万德数据库怎么用(wind数据库只能在学校用吗)
- 浅谈古琴的音色特点 古琴的音色