MySQL – 索引

MySQL – 索引


数据库索引是一种提高表中操作速度的数据结构。可以使用一列或多列创建索引,从而为快速随机查找和对记录的访问进行有效排序奠定了基础。

创建索引时,应考虑所有列将用于进行 SQL 查询并在这些列上创建一个或多个索引。

实际上,索引也是一种表,它将主键或索引字段以及指向每个记录的指针保存到实际表中。

用户看不到索引,它们只是用于加快查询速度,数据库搜索引擎将使用它们来非常快速地定位记录。

INSERT 和 UPDATE 语句在具有索引的表上花费更多时间,而 SELECT 语句在这些表上变得很快。原因是在执行插入或更新时,数据库也需要插入或更新索引值。

简单唯一索引

您可以在表上创建唯一索引。唯一索引意味着两行不能具有相同的索引值。这是在表上创建索引的语法。

CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);

您可以使用一列或多列来创建索引。

例如,我们可以使用tutorial_authortutorials_tbl上创建索引

CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)

您可以在表上创建一个简单的索引。只需从查询中省略UNIQUE关键字即可创建一个简单的索引。简单索引允许表中存在重复值。

如果要按降序索引列中的值,可以在列名后添加保留字 DESC。

mysql> CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author DESC)

添加和删​​除 INDEX 的 ALTER 命令

有四种类型的语句用于向表添加索引 –

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) – 此语句添加PRIMARY KEY,这意味着索引值必须是唯一的,不能为 NULL。

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) – 此语句创建一个索引,其值必须是唯一的(NULL 值除外,它可能出现多次)。

  • ALTER TABLE tbl_name ADD INDEX index_name (column_list) – 这会添加一个普通索引,其中任何值都可能出现多次。

  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) – 这将创建一个特殊的 FULLTEXT 索引,用于文本搜索目的。

以下代码块是在现有表中添加索引的示例。

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

您可以使用DROP子句和 ALTER 命令删除任何 INDEX

试试下面的例子来删除上面创建的索引。

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

您可以使用 DROP 子句和 ALTER 命令删除任何 INDEX。

添加和删​​除 PRIMARY KEY 的 ALTER 命令

您也可以以相同的方式添加主键。但请确保主键适用于非空的列。

以下代码块是在现有表中添加主键的示例。这将首先使列 NOT NULL,然后将其添加为主键。

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

您可以使用 ALTER 命令删除主键,如下所示 –

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

要删除不是 PRIMARY KEY 的索引,您必须指定索引名称。

显示索引信息

您可以使用SHOW INDEX命令列出与表关联的所有索引。垂直格式输出(由 \G 指定)通常对这个语句很有用,以避免长行环绕 –

试试下面的例子 –

mysql> SHOW INDEX FROM table_name\G
........

觉得文章有用?

点个广告表达一下你的爱意吧 !😁