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)

相关内容

热门资讯

菲媒:菲律宾副总统称,不优先考... 【环球网报道】综合菲律宾《马尼拉标准报》等媒体6月1日报道,菲律宾副总统莎拉·杜特尔特称,她不优先考...
原创 美... 特朗普再次执掌白宫后,他的“地盘扩张梦”可谓是雷声大雨点小,搞得沸沸扬扬却未见实效。他本想一口气吞掉...
法网-郑钦文鏖战2-1萨姆索诺... 北京时间6月1日,2025赛季网球大满贯法国公开赛继续进行,在女单第三轮的一场比赛中,赛会8号种子、...
以国防军:黎以停火以来超180... △黎巴嫩南部地区(资料图) 以色列国防军当地时间6月1日下午发布消息称,当天上午,一名黎巴嫩真主党特...
深夜,巨子生物突发声明:接受检... 每经编辑|金冥羽 巨子生物旗下重组胶原蛋白品牌可复美产品成分争议持续发酵。 6月1日22点32分,...
新修订的《快递暂行条例》6月1... 6月1日起,《国务院关于修改〈快递暂行条例〉的决定》正式施行。此次修改,专门增加了“快递包装”章节,...
开放“以债换房”政策,可直接置... “南京网络辟谣”微信公众号6月1日发文称,近日,有“南京二手房零首付李经理”“合肥瑶珺房地产代理有限...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
基于TDesign风格的Bla... 作为一名Web开发人员,开发前端少不了使用JavaScript,而Bla...