当前位置: 首页 > news >正文

数据库表水平分割和垂直分割?

0.数据库表的水平分割垂直分割是两种常见的数据库优化技术,‌它们分别针对不同的场景和需求进行数据表的拆分。‌

1. 水平分割(‌Horizontal Splitting)‌主要是按照记录进行分割,‌即不同的记录被分开保存在不同的表中,‌而这些表具有相同的列数。

‌这种分割方式适用于以下情况:‌

(1)当表非常大,‌分割后可以降低查询时需要读取的数据和索引的页数,‌提高查询速度。‌

    当表中的数据本来就有独立性,‌例如记录不同地区或不同时期的数据,‌且有些数据常用而有些不常用。‌

(2)需要把数据存放到多个介质上。‌

    水平分割的缺点是增加了查询的复杂性,‌可能需要使用UNION操作来查询所有数据,‌这在某些情况下可能会超过它带来的优点。‌

2.垂直分割(‌Vertical Splitting)‌则是按照列进行分割,‌即一条记录中的不同列被分开保存在不同的表中。‌

这种分割方式适用于:‌

(1)当表中某些列常用而其他列不常用,‌通过垂直分割可以提高查询效率。‌
(2)当需要减小数据行的尺寸,‌以便在单个数据页中存放更多的数据,‌减少I/O次数。‌
(3)当表的列数不规定时,可以采用垂直分割的方法,在一个表的末尾添加扩展项数,在另一张表中添加扩展项。具体如下所示:

employees表,包含如下字段:

在这里插入图片描述

extTab表包含如下字段信息:

在这里插入图片描述

缺点:增加了管理的复杂性,‌因为需要管理冗余列,‌并且在查询所有数据时需要进行JOIN操作。

http://www.lryc.cn/news/416780.html

相关文章:

  • Linux源码阅读笔记18-插入模型及删除模块操作
  • 力扣面试经典算法150题:移除元素
  • java关于前端传布尔值后端接收一直为false问题
  • 工具学习_CVE Binary Tool
  • 智观察 | 行业赛道里的AI大模型
  • linux 进程 inode 信息获取
  • 计算机网络-网络层
  • 机器学习:识别AI,GraphRAG,LoRA,线性变换,特征
  • 阿里云SMS服务C++ SDK编译及调试关键点记录
  • Flutter 正在迁移到 Swift Package Manager ,未来会弃用 CocoaPods 吗?
  • PDF——分割pdf的10个工具
  • 深入解析 Nginx 反向代理:配置、优化与故障排除
  • 深度学习入门(一):感知机与输入数据
  • kubernetes 集群组件介绍
  • Java | Leetcode Java题解之第327题区间和的个数
  • 开发一个MutatingWebhook
  • 【leetcode详解】另一棵树的子树 (C++递归:思路精析 过程反思)
  • 物联网遇到人工智能,极快的加速物联网时代
  • Vue3+Ts项目中经常遇到导入组件,vscode报无法找到模块xxx,xxx隐式拥有 “any“ 类型解决办法~
  • 郑州轻工业大学zzulioj1151~1159合集
  • 开发框架DevExpress XAF v24.2产品路线图预览——增强跨平台性
  • 程序员短视频上瘾综合症
  • image.convert()函数转换格式及显示图像的RGB三通道图像
  • C语言 ——— 在控制台实现扫雷游戏(一次展开一片,递归实现)
  • el7升级Apache模块编译
  • Linux系统下的日志管理与ELK Stack实践
  • C++入门基础知识
  • Python爬虫技术 第28节 数据可视化
  • react中的装饰器
  • Elasticsearch:用例、架构和 6 个最佳实践