我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL数据库的索引有什么特点

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL数据库的索引有什么特点

本篇内容主要讲解“MySQL数据库的索引有什么特点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL数据库的索引有什么特点”吧!

索引是加速表内容访问的主要手段,特别对涉及多个表的连接的查询更是如此。这是优化中的一个重要内容,我们要了解为什么需要索引,索引如何工作以及怎样利用它们来优化查询。本节中,我们将介绍索引的特点,以及创建和删除索引的语法。

索引的特点

所有的MySQL列类型能被索引。在相关的列上的使用索引是改进SELECT操作性能的最好方法。

一个表最多可有16个索引。最大索引长度是256个字节,尽管这可以在编译MySQL时被改变。

对于CHAR和VARCHAR列,你可以索引列的前缀。这更快并且比索引整个列需要较少的磁盘空间。对于BLOB和TEXT列,你必须索引列的前缀,你不能索引列的全部。

MySQL能在多个列上创建索引。一个索引可以由最多15个列组成。(在CHAR和VARCHAR列上,你也可以使用列的前缀作为一个索引的部分)。

虽然随着 MySQL 的进一步开发创建索引的约束将会越来越少,但现在还是存在一些约束的。下面的表根据索引的特性,给出了 ISAM 表和 MyISAM 表之间的差别:


表2-1  通道信息特征字对照表


索引的特点 ISAM 表 MyISAM 表
NULL 值
BLOB 和 TEXT 列
每个表中的索引数
每个索引中的列数
最大索引行尺寸
不允许
不能索引
16
16
256 字节 允许
只能索引列的前缀
32
16
500 字节


从此表中可以看到,对于 ISAM 表来说,其索引列必须定义为 NOT NULL,并且不能对 BLOB 和 TEXT 列进行索引。MyISAM 表类型去掉了这些限制,而且减缓了其他的一些限制。两种表类型的索引特性的差异表明,根据所使用的 MySQL 版本的不同,有可能对某些列不能进行索引。例如,如果使用3.23 版以前的版本,则不能对包含 NULL 值的列进行索引。

索引有如下的几种情况:

INDEX索引:通常意义的索引,某些情况下KEY是它的一个同义词。索引的列可以包括重复的值。

UNIQUE索引:唯一索引,保证了列不包含重复的值,对于多列唯一索引,它保证值的组合不重复。

PRIMARY KEY索引:也UNIQUE索引非常类似。事实上,PRIMARY KEY索引仅是一个具有PRIMARY名称的UNIQUE索引。这表示一个表只能包含一个PRIMARY KEY。

用Alter Table语句创建与删除索引

为了给现有的表增加一个索引,可使用 ALTER TABLE 或 CREATE INDEX 语句。ALTER TABLE 最常用,因为可用它来创建普通索引、UNIQUE 索引或 PRIMARY KEY 索引,如:

ALTER TABLE tbl_name ADD INDEX index_name  (column_list)
ALTER TABLE tbl_name ADD UNIQUE index_name  (column_list)
ALTER TABLE tbl_name ADD PRIMARY KEY index_name  (column_list)


其中 tbl_name 是要增加索引的表名,而 column_list 指出对哪些列进行索引。一个(col1,col2,...)形式的列表创造一个多列索引。索引值有给定列的值串联而成。如果索引由不止一列组成,各列名之间用逗号分隔。索引名 index_name 是可选的,因此可以不写它,MySQL 将根据第一个索引列赋给它一个名称。ALTER TABLE 允许在单个语句中指定多个表的更改,因此可以在同时创建多个索引。

同样,也可以用ALTER TABLE语句产出列的索引:

ALTER TABLE tbl_name DROP INDEX index_name
ALTER TABLE tbl_name DROP PRIMARY KEY


注意上面第一条语句可以用来删除各种类型的索引,而第三条语句只在删除 PRIMARY KEY 索引时使用;在此情形中,不需要索引名,因为一个表只可能具有一个这样的索引。如果没有明确地创建作为 PRIMARY KEY 的索引,但该表具有一个或多个 UNIQUE 索引,则 MySQL 将删除这些 UNIQUE 索引中的第一个。

如果从表中删除了列,则索引可能会受到影响。如果所删除的列为索引的组成部分,则该列也会从索引中删除。如果组成索引的所有列都被删除,则整个索引将被删除。

例如,对于上面所使用的student为例,你可能想为之创建这样的索引,以加速表的检索速度:

> ALTER TABLE student
-> ADD PRIMARY KEY(id),
-> ADD INDEX mark(english,Chinese,history);

这个例子,既包括PRIMARY索引,也包括多列索引。记住,使用PRIMARY索引的列,必须是一个具有NOT NULL属性的列,如果你愿意产看创建的索引的情况,可以使用SHOW INDEX语句:

mysql> SHOW INDEX FROM student;

其结果为:

+---------+------------+----------+--------------+-------------+-

| Table   | Non_unique | Key_name | Seq_in_index | Column_name |

+---------+------------+----------+--------------+-------------+-

| student |          0 | PRIMARY  |            1 | id          |

| student |          1 | mark     |            1 | english     |

| student |          1 | mark     |            2 | chinese     |

| student |          1 | mark     |            3 | history     |

+---------+------------+----------+--------------+-------------+-

由于列数太多,上表并没有包括所有的输出,读者可以试着自己查看。

再使用ALTER TABLE语句删除索引,删除索引需要知道索引的名字,你可以通过SHOW INDEX语句得到:

mysql> ALTER TABLE student DROP PRIMARY KEY,
    -> DROP INDEX mark;


再产看表中的索引,其语句和输出为:

mysql> SHOW INDEX FROM student;
Empty set (0.01 sec)


用CREATEDROP INDEX创建索引

还可以用CREATE INDEX语句来创建索引.CREATE INDEX 是在 MySQL 3.23版中引入的,但如果使用3.23 版以前的版本,可利用 ALTER TABLE 语句创建索引(MySQL 通常在内部将 CREATE INDEX 映射到 ALTER TABLE)。该语句创建索引的语法如下:

CREATE UNIQUE INDEX index_name ON tbl_name (column_list)
CREATE INDEX index_name ON tbl_name (column_list)

tbl_name、index_name 和 column_list 具有与 ALTER TABLE 语句中相同的含义。这里索引名不可选。很明显,CREATE INDEX 可对表增加普通索引或 UNIQUE 索引,不能用 CREATE INDEX 语句创建 PRIMARY KEY 索引。

可利用 DROP INDEX语句来删除索引。类似于 CREATE INDEX 语句,DROP INDEX 通常在内部作为一条 ALTER TABLE 语句处理,并且DROP INDEX是在 MySQL 3.22 中引入的。

删除索引语句的语法如下:

DROP INDEX index_name ON tbl_name

还是上一节的例子,由于CREATE INDEX不能创建PRIMARY索引,所以这里我们值创建一个多列索引:

mysql> CREATE INDEX mark ON student(english,chinese,history);

同样的检查student表,可知:

mysql> SHOW INDEX FROM student;

+---------+------------+----------+--------------+-------------+

| Table   | Non_unique | Key_name | Seq_in_index | Column_name |

+---------+------------+----------+--------------+-------------+

| student |          1 | mark     |            1 | english     |

| student |          1 | mark     |            2 | chinese     |

| student |          1 | mark     |            3 | history     |

+---------+------------+----------+--------------+-------------+

然后使用下面的语句删除索引:

mysql> DROP INDEX mark ON student;

在创建表时指定索引

要想在发布 CREATE TABLE 语句时为新表创建索引,所使用的语法类似于 ALTER TABLE 语句的语法,但是应该在您定义表列的语句部分指定索引创建子句,如下所示:

CREATE TABLE tbl_name
(

INDEX index_name (column_list),
KEY index_name (column_list),
UNIQUE index_name (column_list),
PRIMARY KEY index_name (column_list),

)

与ALTER TABLE 一样,索引名对于 INDEX 和 UNIQUE 都是可选的,如果未给出,MySQL 将为其选一个。另外,这里KEY时INDEX的一个别名,具有相同的意义。

有一种特殊情形:可在列定义之后增加 PRIMARY KEY 创建一个单列的PRIMARY KEY 索引,如下所示:

CREATE TABLE tbl_name
(
  i INT NO

到此,相信大家对“MySQL数据库的索引有什么特点”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL数据库的索引有什么特点

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql数据库索引的优缺点是什么

索引是一种数据结构,用于加快数据库表中数据的检索速度。下面是索引的优缺点:优点:加快数据的检索速度:索引可以帮助数据库系统快速定位符合条件的数据,从而加快数据检索的速度。提高数据的完整性:索引可以通过定义唯一索引或主键索引来保证数据的完
mysql数据库索引的优缺点是什么
2024-04-09

mysql的数据库引擎有哪些特点

MySQL的数据库引擎主要有以下几种特点:InnoDB引擎:InnoDB是MySQL默认的事务安全引擎,支持事务、行级锁以及外键约束等特性,适合处理大量并发操作和数据一致性要求高的应用。MyISAM引擎:MyISAM是MySQL最早的引擎之
mysql的数据库引擎有哪些特点
2024-04-09

MySQL数据库中索引有什么用

这篇文章将为大家详细讲解有关MySQL数据库中索引有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、MySQL索引简介索引是MySQL数据库为了加快数据查询的速度,给表中的某一个或者是某几个列添加
2023-06-22

MongoDB数据库有什么特点

这篇文章给大家介绍MongoDB数据库有什么特点,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、什么是MongoDB数据库?MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统,是一个基于分布式文
2023-06-14

mysql数据库的特点有哪些

MySQL数据库的特点有以下几点:1. 开源免费:MySQL是一款开源的关系型数据库管理系统,可以免费使用,并且有庞大的开发者社区支持。2. 跨平台性:MySQL可以运行在多个操作系统上,包括Windows、Linux、Mac等。3. 高性
2023-09-08

mysql数据库有哪些特点

这篇文章主要为大家展示了“mysql数据库有哪些特点”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql数据库有哪些特点”这篇文章吧。1、是开源数据库,使用C和C++编写。2、能够在许多不同
2023-06-25

MySQL数据库之索引的作用是什么

MySQL数据库的索引是用于提高查询效率的一种数据结构。它可以帮助数据库系统快速定位和访问数据,减少数据的扫描量,从而提高查询的速度。具体来说,索引在数据库中是一种有序的数据结构,它包含了表中某一列或多列的值,以及对应的物理位置信息。当进行
2023-08-15

mysql的索引有哪些类型和特点

mysql索引类型包含:1. b-tree 索引:快速等值、范围及前缀搜索;2. 哈希索引:快速等值搜索;3. 全文索引:模糊搜索文本字段;4. 空间索引:地理空间查询;5. 覆盖索引:包含查询所需所有列,提高查询速度;6. 唯一索引:确保
mysql的索引有哪些类型和特点
2024-04-22

云数据库mysql的特点有哪些

高可靠性:云数据库MySQL采用多副本同步机制,保证数据的高可靠性和可用性。可扩展性:云数据库MySQL支持自动水平和垂直扩展,可以根据业务需求灵活扩展数据库规模。高性能:云数据库MySQL采用高性能存储设备和优化的数据库引擎,提供高性能的
云数据库mysql的特点有哪些
2024-04-09

mysql数据库有什么优点

mysql数据库的优点包括:开源且免费:经济高效,免费使用。易于使用:直观界面和简单语法,学习和使用方便。高性能:处理高负载,支持多线程和查询缓存。可扩展性:可水平或垂直扩展,适应增长中的数据量和用户群。可靠性:容忍故障和停机时间,支持复制
mysql数据库有什么优点
2024-04-14

编程热搜

目录