MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL 创建索引

索引是一种数据结构,允许我们在现有表中添加索引。它使您能够改进更快地检索数据库表上的记录。它为索引列的每个值创建一个 条目。我们使用它来快速查找记录,而无需在访问表时搜索数据库表中的每一行。我们可以使用表的一个或多个 创建索引,以高效地访问记录。
使用主键或唯一键创建表时,它会自动创建一个名为 PRIMARY 的特殊索引。我们将此索引称为聚集索引。除PRIMARY索引以外的所有索引都称为非聚集索引或二级索引。

在MySQL中需要索引

假设我们有一本包含以下内容的通讯录用户的名称和手机号码。在此联系方式中,我们要查找Martin Williamson的手机号码。如果通讯录是无序格式,则表示通讯录的名称不是按字母顺序排序的,我们需要遍历所有页面并阅读每个名称,直到找不到所需的姓名为止。这种搜索名称称为顺序搜索。
通常从表 联系人簿中查找用户的姓名和联系人,我们通常执行以下查询:
mysql> SELECT mobile_number FROM contactbooks WHERE first_name = 'Martin' AND last_name = 'Taybu';
此查询非常简单。尽管它可以快速找到用户的电话号码和姓名,但数据库会搜索表的整个行,直到找不到所需的行为止。假设contactbooks表包含 数百万行,那么在没有索引的情况下,数据检索需要大量时间才能找到结果。在那种情况下,数据库索引在返回期望的结果并提高查询的整体性能中起着重要作用。

MySQL CREATE INDEX语句

通常,我们在数据库中创建表时创建索引。以下语句创建一个表,该表的索引包含两列col2和col3、
mysql> CREATE TABLE t_index(
   col1 int PRIMARY KEY,
   col2 int NOT null,
   col3 int NOT null,
   col4 VARCHAR(20),
   INDEX (col2,col3) 
);
如果要在表中添加索引,将使用CREATE INDEX语句,如下所示:
mysql> CREATE INDEX [index_name] ON [table_name] (column names)
在此语句中, index_name 是索引的名称, table_name 是索引所属的表的名称,以及 column_names 是列的列表。
让我们为col4列添加新索引,我们使用以下语句:
mysql> CREATE INDEX ind_1 ON t_index(col4);
默认情况下,如果我们未指定 MySQL 允许的索引类型 BTREE 索引。下表根据表的存储引擎显示了不同类型的索引。
存储引擎 索引类型
InnoDB BTREE
Memory/Heap HASH, BTREE
MYISAM BTREE

示例

在此示例中,我们将创建表 student 并在该表上执行CREATE INDEX语句。
表名: 学生
如何在MySQL中创建索引
现在,执行以下语句以返回 CS分支的学生的成绩:
mysql> SELECT studentid, firstname, lastname FROM student WHERE class = 'CS';
此语句将提供以下输出:
如何在MySQL中创建索引
在上表中,我们可以看到四行指出了班级是CS分支的学生。
如果要查看MySQL如何在内部执行此查询,请执行以下语句:
mysql> EXPLAIN SELECT studentid, firstname, lastname FROM student WHERE class = 'CS';
您将获得以下输出。在这里,MySQL扫描包含七行的整个表以查找其班级是CS分支的学生。
如何在MySQL中创建索引
现在,让我们使用以下语句为类列创建索引。
mysql> CREATE INDEX class ON student (class);
执行上述语句后,索引创建成功。现在,运行以下语句以查看MySQL内部如何执行此查询。
mysql> EXPLAIN SELECT studentid, firstname, lastname FROM student WHERE class = 'CS';
上面的语句给出输出,如下所示:
如何在MySQL中创建索引
在此输出中,MySQL从类索引中查找了四行,而没有扫描整个表。因此,它提高了数据库表上记录的检索速度。
如果要 显示表的索引,请执行以下语句:
mysql> SHOW INDEXES FROM student;
如何在MySQL中创建索引
它将给出以下输出。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4