数据库索引的初步了解和使用

数据库中的索引类型和方法


提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在使用数据库中的过程中,因为数据量的增加导致程序在访问数据库的速度要求高,准确快速定位展示数据就是最终的目标,个人认为能实现快速和准确就是最重要的,毕竟实现这两个要求在业务场景复杂的情况下也是不容易的…


# 一、索引的类型? 在我们给数据库的表进行操作时,可以根据实际情况给相应的字段添加索引,应用具体的索引类型和索引方法,其中索引类型在mysql中通常包含四种:
Normal ---  普通索引

UNIQUE --- 唯一索引

FULLTEXT --- 全文索引

SPATIAL --- 空间索引

普通索引:(个人情况出发,别杠我认输)使用最多,大多数情况下都可使用,提升查询的效率

唯一索引:表示唯一性,该索引字段值不会重复,如身份证等,遇到相应的场景时可设置为unique,比如在注册的时候,用户的个人账号Account不能重复,但是会出现多个用户同时注册的情况并且Account一致,那这样的话同步进行则会导致两条记录都插入成功,业务和逻辑上是不合理的,使用锁的话会导致其他用户需要等待,那么这个时候只要给Account字段添加唯一索引即可避免这种情况。

全文索引:通常用于长文本检索的情况下,个人用的不多,没得具体场景介绍,有兴趣bd

空间索引:对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。这个使用要求较严格,建立的列要求NOT NULL,并且是在MYISAM存储引擎的表上支持,常用INNODB就没有然后了…

二、索引的方法(BTREE 、 HASH)

在效率上HASH可以说是首选,检索效率非常高,一次定位,Hash 索引是将索引键通过 Hash 运算之后,将 Hash运算结果的 Hash 值和所对应的行指针信息存放于一个 Hash 表中。但是限制的地方较多,如:

1 不能应用于范围查询,经过hash算法计算后的值得大小关系无法保持和之前一致;
在遇到大量hash值相同的情况下效率不一定高于btree;

2 无法避免全表扫描,hash索引是将索引键通过相应的hash计算得到hash值,
将对应的hash值和指针信息存放在hash表中,上面说到存在相同hash值得情况,
所以即使能取到满足hash键值得记录,得到具体数据还是要访问表中的具体数据来进行对比,得到相应的结果;

BTREE则是在树状结构上进行查找,从根节点到分支节点进行多次I/O访问,效率自然不高,但是实用(普遍性高,如同国民都会打乒乓球,但是出类拔萃顶尖的技术人还是不多的,因为要求高,所以很多人只会简单的普遍技巧(BTREE)但是也足够了)

总结

使用频繁的组合为普通索引NORMAL+BTREE索引方法,保证唯一性则使用UNIQUE的索引类型,其他场景我也没用过,别问,问就是没有再毒打一顿
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值