索引是一个数据结构,允许无涯教程在现有表中添加索引。它使您可以提高数据库表上的记录的更快检索。它为索引列的每个值创建条目。使用它来快速找到记录,而无需在访问表时搜索数据库表中的每一行。可以使用表的一个或多个列来创建一个索引,以便有效地访问记录。
使用主键或唯一键创建表时,它会自动创建一个名为 primary 的特殊索引。将此索引称为群集索引。所有索引以外的所有索引都称为非群集索引或辅助索引。
假设有一个联系人,其中包含用户的名称和手机号码。想找到Martin Williamson的手机号码。如果联系人是无序格式,则表示联系人的名称不会按字母顺序排序,无涯教程需要查找所有页面直到找到要查找名称。这种类型的搜索名称称为顺序搜索。
mysql> SELECT mobile_number FROM contactbooks WHERE first_name = 'Martin' AND last_name = 'Taybu';
此查询非常简单且简单。虽然它发现了电话号码和名称,但数据库会搜索表的整行,直到它找不到所需的行。假设,ContactBooks表包含百万行,然后,没有索引,数据检索需要大量的时间来找到结果。在这种情况下,数据库索引在返回所需结果并提高查询的整体性能方面发挥着重要作用。
通常,无涯教程在数据库中的表创建时创建一个索引。以下语句创建一个表,其中索引包含两个列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语句。
表名:student
现在,执行以下语句以返回其 class cs branch 的学生的结果:
mysql> SELECT studentid, firstname, lastname FROM student WHERE class = 'CS';
此语句将提供以下输出:
如果要查看MySQL如何在内部执行此查询,请执行以下语句:
链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/how-to-create-index-in-mysql.html
来源:LearnFk无涯教程网
mysql> EXPLAIN SELECT studentid, firstname, lastname FROM student WHERE class = 'CS';
您将获得下面的输出。在这里,MySQL扫描包含七行的整个表,以找到类是CS分支的学生。
现在,让无涯教程使用以下语句为类列创建一个索引。
mysql> CREATE INDEX class ON student (class);
执行上述语句后,将成功创建索引。现在,运行以下语句,以了解MySQL在内部执行此查询。
mysql> EXPLAIN SELECT studentid, firstname, lastname FROM student WHERE class = 'CS';
上述声明给出了输出,如下所示:
在此输出中,MySQL从类索引中查找四行而不扫描整个表。因此,它增加了数据库表上的记录的速度。
如果您想要 show 表的索引,请执行以下语句:
mysql> SHOW INDEXES FROM student;
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)