数据库索引解析(面试重点)

news2024/11/26 2:32:27

        一.索引的基本含义

                1.索引类似于一本书的目录,可以加快查询的进度

                2.是以列为维度来设置的(为一列来添加索引)

        二.索引的优劣

                1.优势:提高查询的速度

                2.劣势:占据额外的硬盘空间(因为索引的相关数据要存储到硬盘中),可能会拖慢增删改的速度(因为在增删改时索引也同时要进行相应的改变)

        三.具体的操作方式

                1.创建索引

                      (1).自动创建

                                设置主键primary key,外键foreign key,唯一性约束unique会自动在所在的                         列上创建索引

                      (2).手动创建

                                create index 索引名 on 表名(列名)

                2.查看表中的索引

                        show index from 表名

                3.删除索引

                        drop index 索引名 on 表名

        四.索引的数据结构

                1.索引的数据结构不推荐哈希表的原因

                        哈希表的工作原理是把给定的key通过hash函数映射一个具体的下标才能定位到一                 个具体的位置,所以哈希表只适用于精确查询,不能够进行模糊查询

                2.索引的数据结构不推荐红黑树的原因

                        红黑树能够进行范围查询和模糊查询但是因为红黑树是二叉树,在数据量过多的时                 候二叉树的深度会很深,这会导致在进行查询的时候进行多次的比较,就会导致硬盘进                 行多次的IO操作,消耗资源。

                3.B+树是为了数据库量身定制的数据结构的原因

                        (1).B+树的特点:

                                a.B+树也是N叉搜索树,但是N个key分出了N个区间,其中节点上的最后一个                         key值是最大值

                                b.父节点中的key会在字节点中重复出现(而且是以最大值的身份),看起来                         是有很多的重复元素,浪费了空间,但实际上达成了一个很重要的效果,叶子结点                         这一层,包含了整个数据的全集

                                c.把叶子结点按照链表这样的方式,首尾相连,此时就可以通过叶子结点之间                         的这种连接,快速的找到上一个和下一个元素,进一步的也方便范围查询

 

                (2).B+树的优势

                        a.特别擅长范围查询,因为通过比较查找到范围的起点和终点后,起点和终点在叶                 子结点上的链表便是要查询的范围中的值

                        b.所有的查询操作都会落在叶子节点上吗,比较次数是均衡的,查询时间是稳定的                 (有时候稳定比快更重要)

                        c.由于叶子节点是完整的数据全集,因此表的每一行数据的其他列,都可以保存在                 叶子节点上,而非叶子节点,只存储构建索引的key即可(如id)

        五.一些细节        

                其实在物理层面上不需要表格这样的数据结构,直接使用B+树来存储这个表的数据,表         格只是用户看起来这像是一个表格而已

                此时非叶子节点的存储空间的消耗是非常少的,可以在内存中缓存一份,此时在进行数据查询的时候就可以通过内存来直接比较,从而更快速的找到叶子节点的记录,比较这个操作发生在内存中,进一步减少了硬盘的IO操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/780753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3中将后端传来的json文件转成excel下载到本地

前言: 在浏览器中将JSON格式数据以excel文件的形式下载。该组件是基于[this thread] (https://stackoverflow.com/questions/17142427/javascript-to-export-html-table-to-excel)提出的解决方案。支持Vue3.2.25及以上版本使用 重要提示! Microsoft Excel中的额外提…

亚马逊云科技:云服务是支持数字创新的关键生产力

面对日益复杂的外部环境以及各种不期而至的“黑天鹅”事件,广大企业迫切地需要更加快速、更加高效、更加弹性、性价比更高的解决方案,通过持续不断的数字创新,来应对数字化转型中遭遇的各种挑战。 而在这个过程中,云服务正在发挥至…

opencv常用API记录(python版)

文章目录 1. cv2.minAreaRect2. cv2.boxPoints()3. cv2.drawContours()4. cv2.GaussianBlur5. cv2.Laplacian 1. cv2.minAreaRect 函数cv2.minAreaRect()是OpenCV中用于计算最小外接矩形的函数。它可以根据给定的轮廓点集,计算出一个包围该轮廓的最小外接矩形。 以…

kafka查看消息两种方式(命令行和软件)

1、命令行方式 ①找到kafka安装文件夹 ②执行命令 #指定offset为指定时间作为消息起始位置 kafka-consumer-groups.sh \ --bootstrap-server 20.2.246.116:9092 \ --group group_1 \ --topic lanxin_qiao \ --reset-offsets \ --to-datetime 2023-07-19T01:00:00.000 \ -exe…

【C++进阶之路】适配器、反向迭代器、仿函数

文章目录 前言一、适配器①模拟实现栈②模拟实现对列 二、反向迭代器三、仿函数总结 前言 我们先来笼统的介绍一下今天的三个内容。 适配器——简单的理解就是复用,用已经实现的轮子,来继续实现某种功能。 反向迭代器——原理很简单,就是对…

Openlayers实战:setCenter,setZoom设置跳转

Openlayers开发的项目中,经常会重新设定一个zoom,也会重新跳转到一个中心点。 所用的方法就是setZoom和setCenter。在Openlayers实战中,我们做一个简单的设置,来很好的认识一下这个常用的方法。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特…

Vue3组合式API+TypeScript写法入门

文章目录 前言1.reactive2.ref3.props4.computed5.emit6.watch总结 前言 参考Vue3官网. 本篇以组合式API为例, 但不包含setup语法糖式写法. 原本打算结合class-component, Vue3不推荐就不用了: OverView|Vue Class Component. 而且是不再推荐基于类的组件写法, 推荐单文件组件…

电脑硬盘指的是什么?电脑硬盘长什么样子呢

在很早之前就听说过电脑里面有硬盘,但是不知道电脑硬盘是什么样子,本章文章结合硬盘的接口类型,以及应用技术,说说与硬盘样式有关的知识 一。机械硬盘 如果从硬盘的应用技术来区分硬盘,一般分为两种,早些年…

Leetcode周赛 | 2023-7-23

2023-7-23 题1体会我的代码 题2我的代码 题3体会我的代码 题1 体会 01背包啊。01背包啊!怎么能一直往回溯上想!还是对动态规划太不熟悉了!这不就是01背包吗?还要别人提示才知道。 我的代码 class Solution:def numberOfWays(se…

设计模式再探——状态模式

目录 一、背景介绍二、思路&方案三、过程1.状态模式简介2.状态模式的类图3.状态模式代码4.状态模式还可以优化的地方5.状态模式的项目实战,优化后 四、总结五、升华 一、背景介绍 最近产品中有这样的业务需求,不同时间(这里不是活动的执行时间&…

Spring 统一登录验证、数据格式返回、异常处理的实现

文章目录 spring统一功能实现前言1. 统一用户登录权限验证1.1 传统实现方式1.2 Spring AOP用户统一登录验证1.2.1 Spring 拦截器 2. 统一数据格式返回3. 统一异常处理 spring统一功能实现 前言 在上一篇博客我们介绍了Spring AOP以及简单使用了Spring AOP,这篇博客…

力扣 -- 122. 买卖股票的最佳时机 II

一、题目: 题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode) 二、解题步骤 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 三、参考代码: clas…

【数据可视化】基于Python和Echarts的中国经济发展与人口变化可视化大屏

1.题目要求 本次课程设计要求使用Python和ECharts实现数据可视化大屏。要求每个人的数据集不同,用ECharts制作Dashboard(总共至少4图),要求输入查询项(地点和时间)可查询数据,查询的数据的地理…

工业的相机与镜头(简单选型)

面阵相机,需要多大的分辨率?多少帧数? 前提条件: 1.被检测的物体大小 2.要求检测的精度是多少 3.物体是否在运动过程中进行检测,速度是多少 线阵相机选择(分辨率、扫描行数) 行频:每秒扫描多少行&#xf…

【GitOps系列】使用Kustomize和Helm定义应用配置

文章目录 使用 Kustomize 定义应用改造示例应用1.创建基准和多环境目录2.环境差异分析3.为 Base 目录创建通用 Manifest4.为开发环境目录创建差异 Manifest5.为预发布环境创建差异 Manifest6.为生产环境创建差异 Manifest 部署 Kustomize 应用部署到开发环境部署到生产环境 使用…

Python 逻辑回归:理论与实践

文章目录 1. 介绍1.1 什么是逻辑回归?1.2 逻辑回归的应用领域 2. 逻辑回归的原理2.1 Sigmoid 函数2.2 决策边界2.3 损失函数 3. 逻辑回归的实现3.1 数据准备3.2 创建逻辑回归模型3.3 模型训练3.4 模型预测3.5 模型评估 4. 可视化决策边界4.1 绘制散点图4.2 绘制决策…

《零基础入门学习Python》第056讲:论一只爬虫的自我修养4:网络爬图

今天我们结合前面学习的知识,进行一个实例,从网络上下载图片,话说我们平时闲来无事会上煎蛋网看看新鲜事,那么,熟悉煎蛋网的朋友一定知道,这里有一个 随手拍 的栏目,我们今天就来写一个爬虫&…

实验三 贪心算法

实验三 贪心算法 迪杰斯特拉的贪心算法实现 优先队列等 1.实验目的 1、掌握贪心算法的基本要素 :最优子结构性质和贪心选择性质 2、应用优先队列求单源顶点的最短路径Dijkstra算法,掌握贪心算法。 2.实验环境 Java 3.问题描述 给定带权有向图G (V…

前端对后端路径的下载//流文件下载

1.前端对后端路径的下载 2.流文件下载

25 MFC 数据库

文章目录 导入ADO库 导入ADO库 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")void CADODlg::OnBnClickedBtnQuery() {//导入ADO库::CoInitialize(NULL);//初始化COM库_ConnectionPtr pCo…