1、什么是索引?
在关系型数据库中,索引某一个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
2、索引的优缺点
优点:
通过创建唯一的索引可以保证每一行数据的唯一性。
可以加快数据查询的速度。
在实现数据的参考完整性方面可以加速表与表之间的连接。
在实现分组和排序子句进行数据查询的时候,可以显著减少查询中分组和排序的时间。
缺点:
创建和维护索引需要耗费时间。
索引需要占用磁盘空间。
对表中的数据进行修改,索引也需要维护。
3、索引的种类
普通索引
create index indexname on tablename;
普通索引是 MySQL 中最基本的索引类型,它没有任何限制,唯一任务就是加快系统 对数据的访问速度。 普通索引允许在定义索引的列中插入重复值和空值。
唯一索引
create unique index indexname on tablename;
唯一索引是为了避免数据出现重复。
唯一索引列的值必须唯一,允许有空值。如果是组合索引,则列值的组合必须唯一。
主键索引
主键索引是一种特殊的唯一索引,不允许值重复或者值为空。 创建主键索引通常使用 PRIMARY KEY 关键字。不能使用 CREATE INDEX 语句创建主 键索引
空间索引
空间索引是对空间数据类型的字段建立的索引,使用 SPATIAL 关键字进行扩展。 创建空间索引的列必须将其声明为 NOT NULL,空间索引只能在存储引擎为 MyISAM 的表中创建。
全文索引
全文索引主要用来查找文本中的关键字,只能在 CHAR、VARCHAR 或 TEXT 类型的 列上创建。在 MySQL 中只有 MyISAM 存储引擎支持全文索引。 全文索引允许在索引列中插入重复值和空值。 不过对于大容量的数据表,生成全文索引非常消耗时间和硬盘空间。 创建全文索引使用 FULLTEXT 关键字。
4、索引的操作
创建索引
create indexname on 表名 (列名 [长度] [asc|desc])
索引也可以在创建表的时候创建(create table)
CREATE TABLE CONSTRAINT PRIMARY KEY [索引类型] (,…)
CREATE TABLE KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)
CREATE TABLE UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)
CREATE TABLE FOREIGN KEY <索引名> (<列名>
也可以使用alter table add 添加上述关键语句(去掉create table ,改成alter table add)
查看索引
show index from <表名> [from <数据库名>]
删除索引
drop index <索引名> on <表名>