MySQL 为什么要使用索引及索引创建的原则有哪些?

MySQL 为什么要使用索引及索引创建的原则有哪些?

B站搜索“乐哥聊编程“有本篇文章配套视频‍

https://www.bilibili.com/video/BV1se4y1t7fx

什么是索引索引也是一种排好序的数据结构,它记录了原数据的单个列或多个列,通过索引查询,程序不需要查所有记录,只需要先按照索引查到具体的数据,然后在根据索引记录的指针位置,找到对应的原始数据记录。举个例子来说,索引就好比是我们书本的目录,我们通过目录能够快速定位到我们想看指定章节的页数,如果我们不适用索引,会是什么情况呢?我们最大可能就是从头往后方,一页一页确认去找。

为什么创建索引因为索引在一定程度上,提高了数据库查询速度 在MySQL中有两种数据访问方式:顺序访问和索引访问。

顺序访问顺序访问又叫全表扫描,也就是你要查数据时,它是从表的第一行一直按照你的条件进行匹配,直到最后一行,如果数据量比较少的情况下,这是没有问题,但是如果数据量很多,这种查询方式就有点够呛了,前端请求一个数据,直接把网站给干挂了。

索引访问索引访问顾名思义就是我们在查询数据是在索引数据结构上执行的,索引数据首先是排好序的,其次他没有保存完整的数据列(聚集索引除外,它的完整记录是放在叶子节点中的) 这种访问方式前提是你已经建好索引,并且你检索的数据列存在索引表中,只有这样你才可以使用索引查询。如果创建了索引之后,当我们对数据进行更新操作时,需要同时更新和维护索引数据。

哪些情况下需要创建索引选择唯一性索引:唯一性索引的值是唯一的,可以更快速的通过索引来确定某条记录为经常需要排序、分组和联合操作的字段建立索引经常作为查询条件的字段建立索引尽量使用数据量少的索引,如果索引的值很长,那么查询的速度会受到影响尽量使用前缀来作为索引尽量选择区分度高的列作为索引,区分度高是指字段不重复的列,比如不要给性别或状态等列建立索引尽量的扩展索引,而不是新建索引在需要排序的字段上面建立索引在where子句中的字段建立联合索引联表查询时,要给关联字段创建索引哪些情况下不建议创建索引重复度比较高的列不要设置索引对于定义为text,image,bit类型的列不要建索引如果数据列经常被修数据量小的表不要建索引,也许全表扫性能会更高不建议对无序的字段建立索引,如UUID(以前好像经常用,现在不怎么用了)不要对一个字段建立多个联合索引索引优缺点优点可以通过唯一索引保证数据唯一性加快数据的查询速度可以加速表和表的连接在查询过程中使用索引,还会触发mysql隐藏的优化器,提高查询性能缺点索引的创建和维护需要消耗时间,并且还占据一部分额外的空间,并且随着数据量增大,索引占用的空间也会增大(但是和显著提升的性能来说,这也不算啥)当对表数据进行更新和删除时,需要同时维护索引记录,降低了数据的维护速度,有可能会出现数据更新了,但是索引没更新上(这种情况概率比较小)总结所以在创建索引时,我们要综合考虑索引优缺点和创建索引的规则(哪些该创建索引,哪些不该创建索引)。不能一味的为了创建索引而创建索引。

相关推荐

2018百视通之夜_榫卯篇
bt365投注

2018百视通之夜_榫卯篇

📅 02-09 👁️ 8827
BBC Learning English
bt365投注

BBC Learning English

📅 07-27 👁️ 8484
三星S4 mini版真的值得买吗?4.3英寸三星S4迷你版真实评测
中国球迷的世界杯记忆:这些画面埋藏了多少青春
365b体育最新下载地址

中国球迷的世界杯记忆:这些画面埋藏了多少青春

📅 07-16 👁️ 8706
“红发”杰克·芬德
365b体育最新下载地址

“红发”杰克·芬德

📅 01-26 👁️ 6931
《蜜桃成熟时》高清完整版在线观看,HD粤语无字下载,无删减版全集云播放
英雄联盟圣诞驯鹿克格莫原价多少钱?
365b体育最新下载地址

英雄联盟圣诞驯鹿克格莫原价多少钱?

📅 01-14 👁️ 7904
我的世界刷怪塔为什么不刷怪
bt365投注

我的世界刷怪塔为什么不刷怪

📅 08-29 👁️ 8015
推荐10款超好玩的电脑免费单机游戏
365b体育最新下载地址

推荐10款超好玩的电脑免费单机游戏

📅 06-14 👁️ 1584