文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

关于mysql的索引是怎样的

2024-04-02 19:55

关注

本篇文章给大家分享的是有关关于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的索引是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯