讲深入浅出索引-总结[通俗易懂]

讲深入浅出索引-总结

大家好,又见面了,我是全栈君。

1.索引的作用:提高数据查询效率
2.常见索引模型:哈希表、有序数组、搜索树
3.哈希表:键 – 值(key – value)。
4.哈希思路:把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置
5.哈希冲突的处理办法:链表
6.哈希表适用场景:只有等值查询的场景
7.有序数组:按顺序存储。查询用二分法就可以快速查询,时间复杂度是:O(log(N))
8.有序数组查询效率高,更新效率低
9.有序数组的适用场景:静态存储引擎。
10.二叉搜索树:每个节点的左儿子小于父节点,父节点又小于右儿子
11.二叉搜索树:查询时间复杂度O(log(N)),更新时间复杂度O(log(N))
12.数据库存储大多不适用二叉树,因为树高过高,会适用N叉树
13.InnoDB中的索引模型:B+Tree
14.索引类型:主键索引、非主键索引
主键索引的叶子节点存的是整行的数据(聚簇索引),非主键索引的叶子节点内容是主键的值(二级索引)
15.主键索引和普通索引的区别:主键索引只要搜索ID这个B+Tree即可拿到数据。普通索引先搜索索引拿到主键值,再到主键索引树搜索一次(回表)
16.一个数据页满了,按照B+Tree算法,新增加一个数据页,叫做页分裂,会导致性能下降。空间利用率降低大概50%。当相邻的两个数据页利用率很低的时候会做数据页合并,合并的过程是分裂过程的逆过程。
17.从性能和存储空间方面考量,自增主键往往是更合理的选择。
思考题:
如果删除,新建主键索引,会同时去修改普通索引对应的主键索引,性能消耗比较大。
删除重建普通索引貌似影响不大,不过要注意在业务低谷期操作,避免影响业务.

由于索引中存储的是主键的key值,那么重建主键时,不但会重建主键,所有的普通索引也会重新构建,所以通常不建议重建索引,无普通索引的除外。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea 设置黑色或白色背景以及图片背景

    idea 设置黑色或白色背景以及图片背景idea编辑软件在怎么设置黑色或者白色背景点击File–>setting(或者Ctrl+Alt+S)–>Editor–> Color scheme–>General 选择好风格之后,Apply–>OK 最后弹框中点击Yes即可。————————————————–…

    2022年6月13日
  • Android布局之表格布局[通俗易懂]

    Android布局之表格布局[通俗易懂]表格布局(Tablelayout) 简介:       Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。     当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。     当为View时,该View将独占一行。表格布局是以行和列的形式来对控件…

    2022年5月14日
  • Reaver linux 安装教程

    Reaver linux 安装教程首先安裝:Reaver相關庫文件打開終端機:$sudoapt-getinstalllibpcap-dev$sudoapt-getinstalllibsqlite3-dev安裝Reaver1.4$sudoapt-getinstallsubversion#部署svn環境$cdDesktop$svncheckouthttp://reaver-wps.googlecode.co…

    2022年6月3日
  • 小众网java下载_jar应用下载

    小众网java下载_jar应用下载全版本都有包含:windows、Linux、源码等,根据名称进行挑选、下载!网址:https://jbossas.jboss.org/downloads/如何解决了您的问题,欢迎关注我!还希望来JAVAWEB开发交流群:958923746,有问题欢迎共享,共同提升!…

    2022年10月3日
  • java 中缀转后缀(逆波兰)[通俗易懂]

    java 中缀转后缀(逆波兰)

    2022年1月27日
  • 086-vdbench

    086-vdbench【1】centos下的安装首先安装JavaJDK和一些工具包sudoyuminstall-yjava-1.7.0-openjdkjava-1.7.0-openjdk-develunzip./vdbench-t【2】vdbench是一个I/O工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。…

    2022年5月19日

发表回复

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

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