mysql优化1:建表原则
2024-08-30 07:09:35
建表三大原则:
- 定长和变长分离
- 常用字段和不常用字段分离
- 使用冗余字段或冗余表
1、定长与变长分离
如 id int,占4个字节,char(4)占4个字符长度,也是定长,time
即每一个单元值占的字节是固定的。在磁盘上查找时,由于每一行长度固定,比如长度为10000,查下一条时只需查+10001位置的数据。
而varchar,text,blog等变长字段,适合单放一张表,用主键和核心表关联起来。
2、常用字段和不常用字段分离
需要结合具体业务分析,分析字段的查询场景,查询场景频度低的字段,单拆出来。
3、在1对多,需要关联统计的字段上,添加冗余字段
这一条与一般的设计理念冲突。但是在某些业务场景下,很好使用。
比如,有两张表,表1用户表,表2用户-订单表,在查询表1用户时,同时需要知道用户下订单数量的总数,为了获取这个总数需要在表2上count一下。这种情况可以在表1增加一个用户订单总数的冗余字段,每往表2插入一个用户订单时,表1的用户订单总数冗余字段加1。这样查询用户下订单总数时,可以直接用该冗余字段,不需要额外查表2.
添加冗余字段,是一种“牺牲空间来换取时间”的方法。
在计算机的优化中,说来说去其实就两个优化:1、牺牲时间换空间;2、牺牲空间换时间。
多年前,内存宝贵时,空间小,程序员不得不一个字节一个字节扣,尽量少使用内存;如今硬件是白菜价,更倾向于用空间来换时间,东西都往内存里扔,换来时间响应的提升。
最新文章
- bzoj1103树状数组水题
- sessionid如何产生?由谁产生?保存在哪里?
- POJ 1274 The Perfect Stall、HDU 2063 过山车(最大流做二分匹配)
- LINQ教程
- java环境基础步骤 jdk tomcat eclipse
- 毕向东Java基础:day09_3-4
- CSS 命名规范及标题供参考与学习
- java中ExecutorService接口
- hdu 4712 Hamming Distance bfs
- Redhat6.4下配置本地yum
- Atom 编辑器系列视频课程
- centos服务器如何监控访问ip,并将非法ip通过防火墙禁用
- mybatis加载属性
- C++11 AUTO 类型实践
- python3.6利用pyinstaller模块打包程序为.exe可执行程序
- DRF之接口文档以及Xadmin
- 玩转X-CTR100 l USB功能-HOST鼠标键盘
- JS获取对象“属性”的方法
- 关于RAM与ROM的区别与理解
- AppDomain.CurrentDomain.AssemblyResolve