如何在 MySQL 中创建索引17 Mar 2025 | 4 分钟阅读 索引是一种数据结构,允许我们在现有表中添加索引。它可以提高数据库表中记录的检索速度。它为索引列的每个值创建一个条目。当我们访问数据库表时,可以使用它来快速查找记录,而无需搜索数据库表中的每一行。我们可以使用表的一个或多个列来创建索引,以实现高效的记录访问。 当表是使用主键或唯一键创建时,它会自动创建一个名为 PRIMARY 的特殊索引。我们称此索引为聚集索引。PRIMARY 索引以外的所有索引都称为非聚集索引或二级索引。 MySQL 索引的必要性假设我们有一个包含用户姓名和手机号码的通讯簿。在这个通讯簿中,我们想查找 Martin Williamson 的手机号码。如果通讯簿是无序格式,意味着通讯簿中的姓名没有按字母顺序排序,我们需要翻阅所有页面并阅读每个姓名,直到找到我们正在寻找的姓名。这种查找姓名的方式称为顺序搜索。 为了从表 contactbooks 中查找用户的姓名和联系方式,通常,我们执行以下查询 这个查询非常简单易懂。尽管它能快速找到用户的电话号码和姓名,但数据库会搜索表的整个行,直到找到你想要的行。假设 contactbooks 表包含数百万行,那么在没有索引的情况下,数据检索需要花费大量时间来查找结果。在这种情况下,数据库索引在返回所需结果和提高查询整体性能方面起着重要作用。 MySQL CREATE INDEX 语句通常,我们在数据库中创建表时会创建索引。以下语句创建一个包含两列 col2 和 col3 的带索引的表。 如果我们想在表中添加索引,我们将使用 CREATE INDEX 语句,如下所示: 在此语句中,index_name 是索引的名称,table_name 是索引所属表的名称,column_names 是列的列表。 让我们为 col4 列添加新索引,我们使用以下语句: 默认情况下,MySQL 允许索引类型为 BTREE,如果我们没有指定索引类型。下表显示了基于表存储引擎的不同类型的索引。
示例在此示例中,我们将创建一个名为 student 的表,并在该表上执行 CREATE INDEX 语句。 表名:student 现在,执行以下语句以返回 class 为 CS branch 的学生结果: 此语句将产生以下输出 在上表中,我们可以看到四行,表示 class 为 CS branch 的学生。 如果你想查看 MySQL 如何在内部执行此查询,请执行以下语句: 你将得到以下输出。这里,MySQL 扫描了包含七行的整个表来查找 class 为 CS branch 的学生。 现在,让我们使用以下语句为 class 列创建一个索引。 执行上述语句后,索引已成功创建。现在,运行下面的语句来查看 MySQL 如何在内部执行此查询。 上述语句给出如下所示的输出: 在此输出中,MySQL 从 class 索引中找到四行,而无需扫描整个表。因此,它提高了数据库表中记录的检索速度。 如果你想显示表的索引,请执行以下语句: 它将产生以下输出: 下一主题MySQL 删除索引 |
我们请求您订阅我们的新闻通讯以获取最新更新。