在使用数据库时,经常需要查找特定的数据,比如说在下图中
select * from xxx where id = 10000
Mysql数据库如果没有索引就必须从第1条记录开始遍历,直到找到id为10000的数据,这样的效率非常低。为了解决这一问题,Mysql中允许建立索引来加快数据表的查询和排序。
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息,这也是索引最基本的功能。
索引的种类
1.主键索引:
create table 表名(
字段 类型 primary key,
-- 或者在后面
primary key (字段名)
)
1>某一个属性组能唯一标识一条记录;2>最常见的索引类型;3>确保数据记录的唯一性; 4>确定特定数据记录在数据库中的位置
2.唯一索引:
唯一性索引是由UNIQUE定义的索引,该索引所在字段的值必须是唯一的。
create table 表名(
字段 类型 not null UNIQUE,
-- 或者在后面
UNIQUE key(字段名)
)
*1.避免同一个表中某数据列中的值重复;*2.对比主键索引只能有一个,唯一索引可有多个
3.常规索引:
create table 表名(
字段 类型 not null,
-- 常规索引
INDEX / KEY (字段名)
)
1>index和key关键字都可设置常规索引;2>不宜添加太多常规索引,影响数据的插入、删除和修改操作
4.全文索引:
全文索引是由FULLTEXT定义的索引,它只能创建在CHAR、VARCHAR或TEXT类型的字段上
-- 语法
create table 表名(
字段 varchar(10) not null,
-- 全文索引
FULLTEXT key (字段名、字段名、字段名) with parser ngram
)
-- 用法
select 字段 from 表名 where MATCH(字段)
AGAINST(要搜索的关键词)
1>Mysql 5.6之前版本,只有myisam支持全文索引,5.6之后,Innodb和myisam均支持全文索引。 2>只有char、varchar、text类型字段能创建全文索引。 3>当大量写入数据时,建议先写入数据,后再建立全文索引,提高效率。