什么是索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
索引的类型
- 普通索引
- 唯一索引
unique
- 主键索引
- 组合索引
- 全文索引
fulltext
CREATE TABLE table_name[col_name data type]
[unique|fulltext][index|key][index_name](col_name[length])[asc|desc]
1.unique|fulltext为可选参数,分别表示唯一索引、全文索引
2.index和key为同义词,两者作用相同,用来指定创建索引
3.col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择
4.index_name指定索引的名称,为可选参数,如果不指定,默认col_name为索引值
5.length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度
6.asc或desc指定升序或降序的索引值存储
作用
- 可以大大加快数据的检索速度,这也是创建索引的最主要的原因
- 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
- 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义
- 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间
- 建立索引,可以在查询的过程中,提高系统的性能
索引的坏处
- 创建和维护索引需要耗费时间,这个随数据量增加而增加。
- 索引需要占用物理空间
- 对表增删改也需要动态维护,降低数据库维护速度
数据表建立索引的原则
- 经常需要搜索的列上,可以加快搜索的速度
- 作为主键的列上,强制该列的唯一性和组织表中数据的排列结构
- .经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度
- 经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的
- 经常需要排序的列上创 建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间
- 经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度
索引的使用
- 以下操作符号可以应用索引
:<,<=,=,>,>=,BETWEEN,IN,LIKE不以%_开头 - 以下需要注意不使用索引
<>, NOT IN, LIKE %_开头
<> 可以用 a>1 or a<3 代替,NOT IN 可以用NOT exists代替 - 在使用max() min()时最好加上索引.
- 索引不会包括有NULL值,就是有NULL,索引就失效
- 使用短索引
索引的创建
create [unique] index 索引名
on 表名称 (字段名[(长度)]);
//unique 唯一性 不允许具有索引值相同的行,从而禁止重复的索引或键值
CREATE INDEX account_Index ON `award`(`account`);
ALTER TABLE award ADD INDEX account_Index(`account`);
CREATE UNIQUE INDEX IndexName ON `TableName`(`字段名`(length));
索引的删除
drop index 索引名 on 表名称;
网友评论