mysql索引
发布日期:2022-02-25 00:55:18 浏览次数:48 分类:技术文章

本文共 1116 字,大约阅读时间需要 3 分钟。

数据库知识点比较杂

个人包含以下几方面

1,基础语法

2,索引

3,事务

4,锁

基础语法需要自己多练就可以了

索引

索引是什么

索引是一种排好序的数据结构,目的是提高查找效率。

索引用的树B+树

可以看这个博客写的特别好

为什么要用b+树 不用hash 和二叉树 和b树

与二叉树相比 

二叉树相比于顺序查找的确减少了查找次数,但是在最坏情况下,二叉树有可能退化为顺序查找

 与B树相比 

B树在提高IO性能的同时,并没与解决元素遍历时效率低下的问题,正是为了解决这个问题,B+数应运而生。B+数只需遍历叶子节点即可实现整棵树的遍历,而B树必须使用中序遍历按序扫库,B+树支持范围查询非常方便。这才是数据库选用B+树的主要原因

与hash比

hash表只能匹配是否相等,不能实现范围查找,当需要按照索引进行order by时,hash值没办法支持排序,当数据量很大时,hash冲突的概率也会非常大。

什么时候用索引

1,主键自动建立唯一索引

2,频繁操作的数据要建索引

3,频繁更新的不是后建立索引

4,where 中用不到的字段一般不创建索引

5 ,外键关系,建立外键索引

6,查询和分组的字段创建索引(因为分组先排序)

什么时候不建立

重复且平均分配的建索引作用不大。

索引有哪些

唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引) 

主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引) 
聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引 
非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,

组合索引

指多个字段上创建的索引,只有在查询条件中使用了创建一个字段,索引才会被使用。使用组合索引时遵循最左前缀。

什么事最左前缀

索引安装最左原则,如果(a,b,c)创建索引只有当查询条件为(a)(a,b)(a,b,c)查询的时候索引有效。因为索引和group by  a,b 类似都是先进行a,排序然后对b排序,where 不影响最左排序。

索引是不是越多越好

是并不是越多越好,原因如下: 

1。虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行插入,更新和删除。因为更新表时,不仅要保存数据,还要保存一下索引文件. 
2。建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会增长很快。索引只是提高效率的一个因素,如果有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。
 

转载地址:https://blog.csdn.net/qq_30286505/article/details/98885578 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:类的加载过程
下一篇:mysql 事务

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月22日 06时55分13秒