**
MySQL索引
**
MySQL索引可以用来快速地寻找某些具有特定值的记录,所有 MySQL.索引都以B-树形式保存。如果 MySQL没有索引,执行 select时会从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。如果表中数据有上亿条数据,查询一条数据花费的时间会非常长,索引类似于电子书的目录与页码的对应关系,可加快数据的查找。
如果在需搜索条件的列上创建了索引, MySQL无须扫描全表记录即可快速得到相应的记录行。如果该表有100000条记录,通过索引查找记录要比全表顺序扫描至少快100倍,这就是索引在企业环境中带来的执行速度上的提升。
**1、**MySQL数据库常见索引类型包括:
普通索引( normal)、唯一索引( unique)、全文索引( full text)、主键索引( primary key)、组合索引等,
以下为每个索引的应用场景及区别,
普通索引: normal,使用最广泛。
唯一索引: unique,不允许重复的索引,允许有空值
全文索引: full text,只能用于 MyISAM表, full text主要用于大量的内容检索
主键索引: primary key又称为特殊的唯一索引,不允许有空值。
组合索引:为提高 MySQL效率可建立组合索引。
**2、**MySQL数据库表创建各个索引命令,以t1表为案例,操作如下
主键索引: ALTER TABLE t1 ADD PRIMARY KEY(’ column’)。
唯一索引: ALTER TABLE t1 ADD UNIQUE(’ column’)
普通索引: ALTER TABLE t1 ADD INDEX index_name(’ column’)。
全文索引: ALTER TABLE t1 ADD FULLTEXT(’ column’)
组合索引: ALTER TABLE tl ADD INDEX index_name(‘columnl’,’ column2’,’ column3’)
**3、**t1表的d字段创建主键索引,查看索引是否被创建,然后插入相同的id,提示报错,如图所示。
**4、**MySQL数据库表删除各个索引命令,以表为案例,操作如下:
DROP INDEX index_name ON t1;
ALTER TABLE tl DROP INDEX index_name;
ALTER TABLE tI DROP PRIMARY KEY;
**5、**MySQL数据库查看表索引,操作如下:
show index from t1;
show keys from t1;