【mysql 索引】mysql 添加索引

【mysql 索引】mysql 添加索引主要内容:1、什么是索引2、添加索引sql3、索引所用的算法4、补充下概念5、索引的缺点6、经典案例一、什么是索引?  索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建

大家好,又见面了,我是你们的朋友全栈君。

主要内容:
1、什么是索引
2、添加索引sql
3、索引所用的算法
4、补充下概念
5、索引的缺点
6、经典案例

一、什么是索引?
  索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。

MySQL中可以使用alter table这个SQL语句来为表中的字段添加索引。

二、添加索引sql:

1.添加PRIMARY KEY(主键索引)

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 

2.添加UNIQUE(唯一索引)

ALTER TABLE `table_name` ADD UNIQUE index index_name ( `column` ) 

3.添加INDEX(普通索引)

ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 

例子:

ALTER table t_debt_loan_log ADD INDEX debt_no ( `debt_no` ) 

4.添加FULLTEXT(全文索引)

ALTER TABLE `table_name` ADD FULLTEXT index index_name ( `column`) 

5.添加多列索引

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

三、索引所用的算法:

唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n)。
算法原理:https://www.cnblogs.com/harderman-mapleleaves/p/4528212.html

四、补充下概念:
1、普通索引

  普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
2、唯一索引
  普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

3、注意
经过实践发现,不要以为WHERE中的字段顺序无所谓,可以随便放在哪,应该尽可能地第一次就过滤掉大部分无用的数据,只返回最小范围的数据。

五、索引的缺点

到目前为止,我们讨论的都是索引的优点。事实上,索引也是有缺点的。
  首先,索引要占用磁盘空间。通常情况下,这个问题不是很突出。但是,如果你创建每一种可能列组合的索引,索引文件体积的增长速度将远远超过数据文件。如果你有一个很大的表,索引文件的大小可能达到操作系统允许的最大文件限制。
  第二,对于需要写入数据的操作,比如DELETE、UPDATE以及INSERT操作,索引会降低它们的速度。这是因为MySQL不仅要把改动数据写入数据文件,而且它还要把这些改动写入索引文件。

六、 经典案例

这里写图片描述

解答:



 #######添加普通索引 ALTER table writers add INDEX nameIdx(w_name); ########添加唯一索引 ALTER TABLE writers add UNIQUE INDEX UniqIdx(w_id); ######添加组合索引 CREATE INDEX MultiIdx on writers(w_address,w_age); #####添加全文索引 CREATE FULLTEXT INDEX FIIdx on writers(w_note); show CREATE table writers; #######删除唯一索引 ALTER table writers DROP INDEX UniqIdx; ####删除组合索引 DROP INDEX MultiIdx on writers; #####删除全文索引 drop INDEX FIIdx on writers;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137326.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月2日 上午9:00
下一篇 2022年6月2日 上午9:00


相关推荐

  • 月之暗面Kimi K2.5发布:多模态架构升级,代码办公能力全面进阶

    月之暗面Kimi K2.5发布:多模态架构升级,代码办公能力全面进阶

    2026年3月12日
    2
  • Java面试复习体系总结(2021版,持续更新)

    Java面试复习体系总结(2021版)一、Java基础内容Java基础(一):Java集合框架(超详细解析,看完面试不再怕)Java基础(二):迭代器(Iterator)(含使用方法详解)Java基础(三):LinkedList(含使用方法详解)Java基础(四):ArrayList(含使用方法详解)Java基础(五):HashSet(使用方法详解)Java基础(六):HashMap(使用方法详解)Java基础(七):栈Stack(使用方法详解)

    2022年4月9日
    46
  • 科大讯飞正式发布星火X2大模型

    科大讯飞正式发布星火X2大模型

    2026年3月14日
    3
  • Pulsar知识整理

    Pulsar知识整理关键特性 Pulsar 的单个实例原生支持多个集群 可跨机房在集群间无缝地完成消息复制 极低的发布延迟和端到端延迟 可无缝扩展到超过一百万个 topic 简单的客户端 API 支持 Java Go Python 和 C 支持多种 topic 订阅模式 独占订阅 共享订阅 故障转移订阅 通过 ApacheBookKe 提供的持久化消息存储机制保证消息传递 基于 PulsarFuncti 的 serverlessco 框架 Pu

    2026年3月18日
    1
  • 王维诗集

    王维诗集nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 华岳西岳出浮云 积雪 一作翠 在太清 连天凝 一作疑 黛色 百里遥青冥 白日为之 一作大 寒 森沈华阴城 昔闻乾坤闭 一作开 造 一作变 化生巨灵 右足踏方止 一作山 左手推削成 天地忽开拆 大河注东溟 遂为西峙岳 一作岳崎 雄雄镇秦京 大君包覆载 至德被群生 上帝伫昭告 金天思奉迎 人 一作神 祗望幸久 何独禅云亭 同庐拾遗过韦

    2026年3月19日
    3
  • python 数组转换为字典_char转换为string

    python 数组转换为字典_char转换为string先看下join函数:语法为:str.join(sequence)sequence–要连接的元素序列实例一:连接字符串str1=’-‘seq=(“a”,”b”,”c”)printstr1.join(seq)实例二:连接数组(数组元素为字符串)str2=’*’seq2=[“a”,”b”,”c”]printstr2.join(seq2)

    2022年10月9日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号