什么是MySQL索引

  MySQL索引是MySQL中一类用来加快搜索数据速度的数据结构的统称。索引保存两类数据,一是数据表中一列或者若干列的值,二是存储这些值对应数据页的物理地址的指针。MySQL的数据存在于磁盘当中,如果没有索引,那么需要将所有数据导入到内存当中,一条一条的扫描。除了时间外,I/O也会占据大量时间。有了索引,查找时就可以根据某些列的值,快速准确找到数据的物理地址,从而导入数据。

  索引虽然一般能能加快数据的访问速度,但是也不是完美无缺的。因为索引存储也存储在磁盘上,为了维护索引同样需要一定的时间和空间开销,例如给索引项排序。如果错误地使用索引,反而会造成搜索效率的下降。因此如何使用索引是MySQL需要掌握的重要技能。

MySQL索引的基础语法

  MySQL中有多种索引,这里我们以普通索引为例,其他索引的相关语法,会在之后的文章中继续介绍。

   1. 创建索引

       有三种创建索引的做法,我们可以在建表的时候直接创建索引:

create table t_employee_10(
    id INT Primary key NOT NULL,
    employeename varchar(50) NOT NULL,
    age INT NOT NULL,
    gender varchar(10) NOT NULL,
    telephone varchar(10) NOT NULL,
    address varchar(50) NOT NULL,
    salary FLOAT NOT NULL,
    index telephoneIndex(telephone) -- 在telephone上创建索引telephoneIndex
)

    也可以为已存在的表添加索引:

create index addressIndex on t_employee_10(address);  -- 为address列添加索引

    Alter语法也可以为已存在的表添加索引:

ALTER TABLE t_employee_10 ADD INDEX  salaryIndex(salary);

   2. 删除索引

    删除索引也有两种写法。第一种直接使用DROP关键字:

DROP INDEX salaryIndex on t_employee_10;

    第二种使用ALTER关键字:

ALTER table t_employee_10 DROP INDEX telephoneIndex;

   3. 查看索引

  使用show关键字可以查看当前表中所有的索引:

SHOW INDEX FROM t_employee_10;