在设计数据结构时需要注意:

1、永远为表设定一个自增主键ID,并尽可能的利用此ID进行构造

(在配置表中)尽可能的用上unsigned,并尽可能的小。能用tinyint(1字节)、smallint(2字节)、mediumint(3字节),就不用int(4)字节

2、尽可能的使用ENUM,比如性别,属相等,因ENUM是保存为tinyint

3、尽可能的使用not null,除非业务需要使用null

4、把IP地址存为int unsigned ,使用 inet_aton()  和  inet_ntoa() 来进行转换

5、尽量使用短的字符类型

6、尽量使用固长的字符类型,当表中所有的字段都是固定长度,DB 会认为表是static类型,如果有固定长度和非固定长度的字段尽量采用垂直分割,将表分割。

静态类型的表有以下特点:

a、非常快,由于是固定长度,DB很容易计算出下行的偏移量,所以读取速度会很快,如果不是固定长度,要找到下行数据必须找到主键(这也是主键使用自增ID的重要的原因)

b、容易缓存

c、崩溃后容易重建,因为行是在固定位置

d、比变长需要更多的磁盘空间

e、一般不用优化,除非删除了大量数据,采用optimize table 进行优化

7、垂直分割是把1张表的信息分割成几张表,应注意以下几点

a、尽量把固长和非固定长度的字段分离

b、经常使用和非经常使用的字段分离

c、频繁更新和更新不频繁的字段分离(比如登录时间等),因为表的更新会释放掉表的缓存,如果更新频繁,基本上就用不上缓存。

d、拆分出去的字段,不能经常做join操作,否则性能比不拆分还要下降的多。

9、水平分割

a、设计时备份表和业务表进行分库。这样在做数据库迁移、备份、恢复时往往会有比较好的效果

b、数据量很大的时候,可以将一张表的数据分发到小表中去,以提高插入,查询的效率(比如原始数据的汇集)

8、选择正确的存储引擎

a、MYISAM 适合用在业务量小,更新操作不频繁且不需要事务的应用

b、INNODB 使用在更新操作频繁,需要事务的应用

收藏邀请

mysql 数据结构设计_MYSQL 设计数据结构需注意问题相关推荐

  1. mysql数据迁移工具_MySQL数据迁移工具的设计与实现

    一.背景 MySQL作为最流行的关系型数据库产品之一,当数据规模增大遭遇性能瓶颈时,最容易想到的解决方案就是分库分表.无论是进行水平拆分还是垂直拆分,第一步必然需要数据迁移与同步.由此可以衍生出一系列 ...

  2. 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...

  3. mysql数据备份与恢复_MySQL数据备份与恢复

    常见的MySQL管工具 mysql 命令行 跨平台 MySQL官方bundle包自带 MySQL-Workbench 图形 跨平台 MySQL官方提供 MySQL-Front 图形 Windows 开 ...

  4. MySQL数据表的设计

    MySQL数据表 服务器端数据表的设计 创建表的语句 服务器端数据表的设计 首先就是要解决数据的问题,作为一个聊天系统,我们的服务器端肯定要有用户的信息,比如说账号,用户名,密码等.在登录的时候,我们 ...

  5. centos mysql数据迁移_Mysql 5.7.17 离线版安装和数据迁移(centos 7)

    总结下离线版 MySQL 5.7.17 的安装步骤: 1.从官网下载mysql 离线版版安装包 mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz: 2.上传安装包my ...

  6. mysql数据控制语言_mysql数据控制语言DCL(Data Control Language)-数据库

    编辑推荐: 本文来自于网络,主要介绍了mysql数据控制语言DCL的创建.删除.修改用户密码.授予权限等代码编写. #创建用户 create user '用户名'@'允许登录的地址' identifi ...

  7. mysql数据恢复工具_mysql文件恢复软件|Mysql数据库修复工具(Recovery for MySQL)下载 V2.7.22255.1 官方版 - 比克尔下载...

    Recovery for MySQL是一款Mysql数据库修复工具,也可以用来恢复mysql文件,支持3.x.4.x.5.x等多个版本,支持myd和myi文件,它可以将检索到的数据保存至SQL脚本中, ...

  8. mysql三范式_MySQL设计之三范式的理解

    转自:https://blog.csdn.net/wangqyoho/article/details/52900585 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要 ...

  9. mysql 数据相加_mysql,php_mysql查询将两列数值相加问题,mysql,php,sql - phpStudy

    mysql查询将两列数值相加问题 如图所示: 我希望加一个total_price列,值为price+price2的和,这个应该怎么写SQL: select * from ims_goods_1 whe ...

最新文章

  1. liunx 分割合并文件
  2. 未清采购订单关闭最全的方法
  3. 3dmax模型转换为*.FLT格式的建模要点
  4. cakephp下整合kindeditor和ckplayer
  5. 区块链工作笔记0001---以太坊流程简介
  6. echarts时间散点图_ECharts 实现地图散点图(下)
  7. cups支持的打印机列表_在Mac上怎样更新打印机软件?
  8. 安装Ubuntu下的开发工具
  9. 前台如何正确接收流信息_如何绕过 Android 8.0 startService 限制?
  10. spark rdd详解一(rdd入门)
  11. 《增长黑客》节选与笔记
  12. 2021-2027全球与中国铂金芯片温度传感器市场现状及未来发展趋势
  13. 智能家居APP的竞品分析报告(米家)
  14. 「Android高级工程师」BAT大厂面试基础题集合-下-Github标星6-5K
  15. 2019年4月27号,下雨杂谈
  16. @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) 和 @NotAudited
  17. 7.9.9路由Routers
  18. 训练SSD时,viz报错
  19. 怎么给图片换背景?点开收货一些新方法
  20. signature=b8cae5ae994df93c3fedf622c2a51ac5,javascript中的Base64、UTF8编码与解码详解

热门文章

  1. Linux 下查看系统是32位 还是64 位的方法
  2. 鲜为人知的软件项目管理原则(转)
  3. window 之命令行的cd
  4. C++中如何定义动态数组
  5. swift5 实现录音App
  6. IOS开发基础之单例模式
  7. java猜拳游戏代码_Java实现简单猜拳游戏
  8. android实现首页倒计时,android 利用CountDownTimer实现时分秒倒计时效果
  9. windows主机加固和评测
  10. html5 摄像头拍摄视频教程,html5实现调用摄像头并拍照功能