mysql或者oracle 表的横向拆分与纵向拆分
创始人
2025-05-31 17:25:30
0

一.简介

表的拆分分为横向拆分(记录的拆分)纵向拆分(字段的拆分)

拆分表的目的:提高查询速度。

小项目,数据量就那么一点点,没必要用分库分表,这是脱裤子放屁。

二.横向拆分(记录的拆分)

在实际的使用中,踩到了热点,刘德华的博客,有80W的博客量,有3w的用户,发现随着用户和博客数的增加,查询速度日渐下降,现在要对博客表blog与用户表user进行优化。

表结构如下:

80万 博客量
create table blog(bidtitlecontentpubtimeuid) 3万 用户量  create table user(uidusernamepasswordnick......)  

首先我们要决定根据哪个字段对记录进行拆分,在这里我们根据uid字段对两个表进行拆分是比较合理的。
博客表假设按每5000的数据量进行拆分,拆分成多张博客表blog1,blog2,blog3,blogN
用户表假设按每5000的数据量进行拆分,拆分成多张博客表user1,user2,user3,userN

 博客表根据uid去拆分:1-5000------blog_15001-10000-----blog_210001-15000----blog_315001-20000----blog_4用户表根据uid 等分:1-5000------user_15001-10000-----user_210001-15000----user_315001-20000----user_4  

这个时候,要如何查询某个人的博客呢:
先根据uid确认表名

根据uid确认表名:$num=ceil(9527/5000);select uid,bid,title,pubtime from blog_$num where uid=9527;

三.纵向拆分(字段的拆分)

把活跃字段(常用)、惰性字段(不常用)分开。

在实际的使用中,比如人员表,活跃字段像用户名、密码、昵称等,惰性字段像手机号、邮箱、性别等不经常使用和修改的字段。
主要是把经常查的数据放在一个表里,不经常查的数据放在另外一张表里,这样查询的速度会提高

一张完整的用户表可以拆分为两张表,如下:

create table user(uid int key auto_increment,username char(20),password char(32) not null,nick char(10));create table user_ext(uidregtimenameemailqqphonesex)

相关内容

热门资讯

“男子持刀入室盗窃”视频引发关... 近日,一段疑似“小偷”入室盗窃被业主家中监控拍下的视频在网上引发关注。11月21日晚,“翠屏公安”微...
绝不允许日本军国主义幽灵复活!... 2025年11月7日,日本首相高市早苗宣称,如果中国大陆对台湾出动军舰并使用武力,可能会构成“存亡危...
【解决】AI法律助手荣获202... 2025全球数字经济大会启幕,搭建国际数字合作高端平台 经国务院批准,由北京市人民政府、国家互联网信...
嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...
家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...