千家信息网

关于mysql的索引是怎样的

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,本篇文章给大家分享的是有关关于mysql的索引是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、mysql中的索引是什么?索引在
千家信息网最后更新 2025年11月09日关于mysql的索引是怎样的

本篇文章给大家分享的是有关关于mysql的索引是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一、mysql中的索引是什么?

索引在mysql中也叫做"键",是mysql存储引擎用于快速找到记录的一种标记,索引对于提高查询速度起到了非常关键的作用,当表中的数据量足够大时,索引的作用愈发重要。

创建和维护索引,需要耗费很大的硬盘空间以及时间,但是可以大大的提高查询速度。

二、在使用索引之前,你需要注意的。

  1. 尽可能的去使用一些简单的数据类型,×××的数据类型比起字符串,处理开销会小很多,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。

  2. 尽量避免空值(NULL)推荐给每个字段都指定为not null(除非你想存储NULL)在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

  3. 不要过度使用索引。

  4. 查询语句后面的where后面比较频繁的条件,比较适合用索引。

  5. 值过于集中的字段,不推荐添加索引,即使加了也不会提高多少效率(比如性别:男/女)

6. 切记不要在索引字段进行运算,例如:select * from users where YEAR(adddate)<2007,将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成:select * from users where adddate<'2007-01-01′。这一个单引号可能会造成mysql近百倍的性能损失。

三、mysql中常用的索引类型。

  1. 普通索引:最基本的索引类型,没有任何的限制,仅仅加快查询速度。(比较常用)

MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。

1.1直接创建一个索引:

CREATE INDEX 索引名称 ON 表名(字段名)

1.2 在表结构上直接创建索引:

alter table 表名 add index/unique/fulltext[索引名](字段名)

1.3 创建主键索引:

alter table 表名 add primary key (字段名)

1.4 删除一个索引:

删除一个非主键索引:

alter table 表名 drop index 索引名;

删除主键索引:

alter table 表名 drop primary key;

2.唯一索引(unique):字段内的值不可以重复。

与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似。

3. 主键索引:字段内的值不能重复,虽然主键索引的字段不能有重复,但是唯一索引不一定是主键。

在一张表上只能有一个主键,但是可以有多个唯一索引。

4. 全文索引(full text):

FULLTEXT索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或CREATE INDEX被添加。

将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。不过切记对于大容量的数据表,生成全文索引是一个非常消耗时间非常消耗硬盘空间的做法。

-创建表的适合添加全文索引

CREATE TABLE `table` (

`id` int(11) NOT NULL AUTO_INCREMENT ,

`title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

`content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,

`time` int(10) NULL DEFAULT NULL ,

PRIMARY KEY (`id`),

FULLTEXT (content)

);

-修改表结构添加全文索引

ALTER TABLE article ADD FULLTEXT index_content(content)

-直接创建索引

CREATE FULLTEXT INDEX index_content ON article(content)

5.多列索引:

多个单列索引与单个多列索引的查询效果不同,因为执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。(个人认为,多列索引没有单列索引查询效率高)。

以上就是关于mysql的索引是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

索引 字段 查询 类型 数据 速度 全文 时间 存储 不同 普通 多个 字符 字符串 运算 复杂 作用 就是 常用 效率 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 程序员家教软件开发老师 关于软件开发的论坛都有哪些 湛江电力系统软件开发 数据库的日期格式 静安区企业软件开发报价业务流程 查看数据库系统所支持的引擎类型 基于计算机网络技术的沟通 吉林特色软件开发项目信息 svn修改数据库 滨州学院专科计算机网络技术 为什么喜欢工业网络技术专业 长三角网络安全产业园开园时间 创建sql数据库表 杭州直播软件开发哪家公司好 网络安全警示案例 怎么做网络安全评估报告 命令行启动远程服务器 网络安全普及ppt 把杯子扔到服务器里搞笑视频 明日之后手游可以玩几个服务器 黄浦区一站式软件开发品质保障 静安区企业软件开发报价业务流程 数据库管理与开发复习题 杭州星琅网络技术有限公司 注销王者荣耀账号服务器 网络安全黄埔军校绿盟科技 跳台网络安全是什么网络 软件开发季度奖金 网络安全保卫大队制度 软件开发分层后如何部署
0