【数据库】数据库为什么比电子表格快

为了更深入地了解SQL数据库用于加速查询的特定算法和机制,让我们关注索引和查询优化。与在CSV等平面文件中进行线性搜索相比,这些基本方面使数据库中的查询速度更快。

1。索引

数据库中的索引有点类似于书籍中的索引,它允许你快速定位特定的信息,而无需阅读整本书。下面是它在数据库中的工作方式:

索引类型

  • B-tree(平衡树):SQL数据库中用于通用查询的最常见索引类型。它对于范围查询(相等查询和范围查询)特别有效。
  • 哈希索引:最适合比较相等。它使用散列表直接将键(您正在查询的值)映射到它们在数据库中的位置。
  • 位图索引:适用于列数据基数较低的场景(即,只有少量不同的值,例如布尔字段中的TRUE/FALSE)。
b树索引的工作原理
  • 结构:b树索引创建一个树结构,其中每个节点包含按特定顺序排序的键。节点中的每个键都指向一条数据库记录或B-tree中的一个较低级别的节点。
  • 查询:当你执行查询时,数据库引擎从b树的根节点开始,并在树的每个节点上根据键值进行决策,直到它到达叶子节点,叶子节点包含指向磁盘中实际数据记录的指针。
  • 效率:这种结构允许数据库显著减少磁盘访问次数。例如,与读取CSV文件中的每个条目相比,在有100万个条目的数据库中查找一条记录可能只需要三到四个步骤。

2。查询优化

SQL数据库使用高级查询优化算法来确定执行查询的最有效方法。下面是所发生事情的简化视图:

####查询优化器

  • 生成计划:优化器分析SQL查询并生成多种可能执行查询的策略。这些策略被表示为不同的“查询计划”。
  • 成本估算:每个计划都是根据其资源(如CPU、内存、I/O)方面的“成本”来评估的。成本模型估计执行计划需要多长时间。
  • 计划选择:优化器选择具有最低估计成本的查询计划。

执行

  • 执行引擎:一旦选择了最佳计划,数据库执行引擎将执行该计划。在执行过程中,引擎可能会使用索引、连接多个表、排序数据或应用聚合——所有这些都是基于底层数据和数据库结构进行优化的。

实际例子

假设你有一张数据库表users,其中包含idnameemail列,并且你经常通过email进行查询。你可以在email列上创建一个b树索引。当你查询`SELECT * FROM users WHERE email = ‘user@example.com’; ',数据库:

  1. 使用B-tree索引快速定位email匹配user@example.com的记录。
  2. 只访问存储这些记录的相关磁盘页,跳过所有其他页。
  3. 返回结果比扫描每一行快得多。

通过使用这些复杂的机制,SQL数据库提供了健壮、高效和快速的数据检索功能,使其成为处理复杂查询和大型数据集的理想选择,与CSV文件所需的线性扫描形成鲜明对比。

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

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

相关文章

再拓信创版图-Smartbi Insight V11与东方国信CirroData数据库完成兼容适配认证

近日,思迈特商业智能与数据分析软件 [简称:Smartbi Insight] V11与北京东方国信科技股份有限公司 (以下简称东方国信)CirroData-OLAP分布式数据库V2.14.1完成兼容性测试。经双方严格测试,两款产品能够达到通用兼容性要…

i18next serverSideTranslations 的使用

i18next 是一个流行的国际化(i18n)库,它可以帮助应用程序中实现多语言支持。next-i18next 是 Next.js 中与 i18next 集成的官方插件,它提供了一种简单的方式来在 Next.js 应用程序中实现国际化。 serverSideTranslations 是 next…

PyTorch中的常见乘法运算(*、@、Mul、Matmul)

哈达玛积:torch.mul()、torch.dot()、* 两个相同尺寸的张量相乘,然后对应元素的相乘就是哈达玛积,这种乘法要求参与运算的矩阵唯独相同,运算结果还是一个相同维度的矩阵。在这个运算中,torch.mul()和*以及torch.dot()…

Cronjob提权

参考: https://redpomelo.xyz/archives/1699953656909 前言 提权为该靶机的精髓,Cronjob通常以root特权运行。如果我们可以成功篡改cronjob中 定义的任何脚本或二进制文件,那么我们可以以root特权执行任意 代码。 什么是Cronjob&#xf…

JS - 分支结构、循环结构

关于JavaScript中的分支结构和循环结构,其实和其他编程语言区别也不是很大,只是js对这两种结构进行了相应的扩充,当然本质上并没有变化,本篇就是一篇记录博主在学习前端路上的总结和敲过的demo,实际上水份很大&#xf…

Jmeter 性能-死锁问题定位+分析

1、环境搭建 ①准备脚本,执行压测 ②用Jstack 打印日志 jstack 112759 >dead.log ③下载日志到本地 sz dead.log 2、问题定位 ①打开dead.log,搜索deadlock ②查看死锁的线程 ③查看死锁位置 3、问题分析 ①下载死锁的类文件 Sz CaseControlle…

使用iMazing对iPhone有影响吗 为什么iPhone都会装iMazing来管理 苹果手机imazing安装

随着科技的迅速发展,智能手机已成为我们日常生活中不可或缺的一部分,iPhone手机占据了智能手机市场的大部分,也有着庞大的用户基础。随着时代的发展,用户对于更高级的设备管理工具的需求也随之增加。iMazing作为一款强大的设备管理…

美业连锁门店收银系统源码-如何查看收款门店对应的加盟商?

美业管理系统源码 博弈美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 第一步: 登录pc管理后端 第二步: 进入企业组织管理-门店管理&a…

pandas/python 一个实战小案例

上次写坦克游戏的时候,接触了一点pandas,当时只是简单了解了一下如何遍历行和列并获取值来替换图片,想更多了解pandas。正好有一些数据需要筛选,试试能不能用通过代码实现。虽然总的来说不复杂,但由于原始数据在命名、…

ai写作强大,ai写作哪个软件最好用?

在当今数字化时代,ai技术的发展正以惊人的速度改变着我们的生活和工作方式。其中,ai写作作为一项令人瞩目的创新,展示了强大的文本生成能力。然而,随着各种ai写作软件的涌现,人们不禁困惑:哪个软件才是最好…

js删除对象中值为null的属性

需求:在做编辑操作的时候,后端不需要值为null的数据,所以默认把编辑中值为null的数据传给他会编辑失败,所以前端做个筛选就行了 let obj {id: 1,name: "翠花",sex: 18,hobby: null,age: null,};// 使用Object.entries(…

SQLite数据库中JSON 函数和运算符(二十七)

返回:SQLite—系列文章目录 上一篇:维护SQLite的私有分支(二十六) 下一篇:SQLite—系列文章目录 ​1. 概述 默认情况下,SQLite 支持 29 个函数和 2 个运算符 处理 JSON 值。还有两个表值函数可用于分解 JSON 字…

大模型应用开发基础

AGI 时代,AI 无处不在,形成新的社会分层: AI 使用者,使用别人开发的 AI 产品AI 产品开发者,设计和开发 AI 产品基础模型相关,训练基础大模型,或为大模型提供基础设施 越向下层,重要…

MEMENTO(备忘录)-- 对象行为型模式

意图: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 别名: Token 动机: 有时必要记录一个对象的内部状态。 适用性: a. 必…

【云计算】云数据中心网络(五):对等连接

《云网络》系列,共包含以下文章: 云网络是未来的网络基础设施云网络产品体系概述云数据中心网络(一):VPC云数据中心网络(二):弹性公网 IP云数据中心网络(三)…

跟TED演讲学英文:How AI could save (not destroy) education by Sal Khan

How AI could save (not destroy) education Link: How AI could save (not destroy) education Speaker: Sal Khan Date: April 2023 文章目录 How AI could save (not destroy) educationIntroductionVocabularyTranscriptSummary后记 Introduction Sal Khan, the founder…

遥瞻智慧:排水系统远程监控的卓越解决方案

遥瞻智慧:排水系统远程监控的卓越解决方案 在城市脉络的深层肌理中,排水系统犹如一条条隐秘的生命线,默默承载着城市的呼吸与律动。然而,如何以科技之眼,赋予这些无形网络以实时感知、精准调控的能力,使之…

网络管理实验三、SNMP协议工作原理验证与分析

1 实验概括 实验目的: 学习捕获SNMP报文,通过报文分析理解SNMP协议的工作过程。 实验内容: 1) 使用snmputilg发送SNMP数据包; 使用wireshark抓包;使用netstat –an查看代理站TCP/UDP连接表; 2)…

识周期以备,用周期以对

坐在阳台上喝茶,看着三角梅的花朵绽放着,凋零着,随风飘落… 春夏秋冬,花开花落。不禁感慨生命之渺小,敬畏周期的力量。 今天抽空聊聊周期,周期的核心是均值回归,周期也是“道”。 1 过去40年&am…

深入解析Tomcat的工作流程

tomcat解析 Tomcat是一个广泛使用的开源Servlet容器,用于托管Java Web应用程序。理解Tomcat的工作流程对于开发人员和系统管理员来说是非常重要的。本文将深入探讨Tomcat的工作原理,包括请求处理、线程池管理、类加载、以及与Web服务器之间的通信。 ###…