文章目录

  • 学习更多干货
  • Pre
  • TIMESTAMP
  • IP
  • 总结


学习更多干货

带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试


Pre

MySQL - 高效的设计MySQL库表

设计指导思想和注意事项都梳理了一下,那来个小练习把


TIMESTAMP

我们使用 MySQL 内置的函数(FROM_UNIXTIME(),UNIX_TIMESTAMP()),可以将日期转化为数字,用 INT UNSIGNED 存储日期和时间

示例

时间 2020-08-17 22:22:22 与整数之间的转换,转化后数字是连续的,占用空间更小,并且可以使用索引提升查询性能。

mysql> select UNIX_TIMESTAMP('2020-08-17 22:22:22');
+---------------------------------------+
| UNIX_TIMESTAMP('2020-08-17 22:22:22') |
+---------------------------------------+
|                            1597674142 |
+---------------------------------------+
1 row in setmysql> select FROM_UNIXTIME(1597674142);
+---------------------------+
| FROM_UNIXTIME(1597674142) |
+---------------------------+
| 2020-08-17 22:22:22       |
+---------------------------+
1 row in setmysql>
mysql> select UNIX_TIMESTAMP(now());
+-----------------------+
| UNIX_TIMESTAMP(now()) |
+-----------------------+
|            1597674191 |
+-----------------------+
1 row in setmysql> select FROM_UNIXTIME(1597674191);
+---------------------------+
| FROM_UNIXTIME(1597674191) |
+---------------------------+
| 2020-08-17 22:23:11       |
+---------------------------+
1 row in setmysql>


IP

  • 一般使用 Char(15) 进行存储,但是当进行查找和统计时,字符类型不是很高效。

  • MySQL 数据库内置了两个 IP 相关的函数 INET_ATON()、INET_NTOA(),可以实现 IP 地址和整数的项目转换。

因此,我们使用 INT UNSIGNED(占用 4 个字节)存储 IP,非 Char(15)。占 15 个字节。

mysql> select INET_ATON('127.0.0.1');
+------------------------+
| INET_ATON('127.0.0.1') |
+------------------------+
|             2130706433 |
+------------------------+
1 row in setmysql> select  INET_NTOA(2130706433);
+-----------------------+
| INET_NTOA(2130706433) |
+-----------------------+
| 127.0.0.1             |
+-----------------------+
1 row in setmysql>

将 IP 的存储从字符型转换成整形,转化后数字是连续的,提高了查询性能,使查询更快,占用空间更小。


总结

  1. 以高性能为目标,库表设计以范式为主,根据特殊业务场景使用反范式,允许必要的空间换时间。

  2. 规范数据库的使用原则,统一规范命名,减少性能隐患,减少隐式转换。

  3. 高性能表设计的原则:合适的字段、合适的长度、NOT NULL。

  4. 从不同角度思考 IP、timestamp 的转换,拓宽设计思路。

  5. 规范的命名可提高可读性,反范式设计可提高查询性能。


MySQL - 库表设计之IP和TIMESTAMP的处理相关推荐

  1. mysql datetime 对于hbm_MySQL库表设计小技巧

    前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...

  2. mysql设计技巧_MySQL库表设计小技巧

    前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...

  3. mysql 列换行 表设计 设计_今天来讲一下怎么利用MySql进行库表设计

    今天来讲一下怎么利用MySql进行库表设计 1 引擎选择 在 mysql 5.1 中,引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运新的 mysql 服务器中.使用 mysql 插件式存 ...

  4. MySQL之库表设计篇:一到五范式、BC范式与反范式详解

    引言 MySQL的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多张表 ...

  5. 玩转MySQL:14000字来详解库表设计

    引言 MySQL的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多张表 ...

  6. MySQL数据库表设计

    MySQL数据库表设计 ​ 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要 ...

  7. MySQL数据表设计优化

    MySQL数据表设计优化 一.选择优化的数据类型 二.范式和反范式 2.1 范式 2.2 范式优缺点 2.3 反范式 2.3 反范式优缺点 2.4 混用范式化和反范式化 三.使用缓存表和汇总表 一.选 ...

  8. Mysql之表设计浅析

    在后端开发中,经常需要设计数据库表,下面简单聊一下mysql的表设计原则. 1.命名规范 数据库表名.字段名.索引名等都需要统一命名规范,且需要具有可读性,英文或英文简写,切忌中英文混用. 反例: a ...

  9. 阿里 mysql建表规范_阿里的Mysql规范 MySQL库表设计规范

    阿里的Mysql规范 MySQL库表设计规范 表设计 1)     表必须定义主键,默认为ID,整型自增,如果不采用默认设计必须咨询DBA进行设计评估 2)    ID字段作为自增主键,禁止在非事务内 ...

最新文章

  1. python有趣的工具_python好玩的小工具(正在create中)
  2. 日志规范之了解slf4j
  3. java 的分类_java的基本类型(转)
  4. 可靠消息最终一致性设计_如何最终启动您的设计产品组合
  5. shell 管道命令 、、||、>、>>(精)
  6. 周四下午3小时,4个行业分享,尽在信创行业发展高端研讨会数据库专场
  7. [VB]SaveSetting 语句 和 DeleteSetting 语句
  8. python qt刷新_Python Qt.SizeFDiagCursor方法代码示例
  9. php memcached存储对象,用于会话存储的Memcached或MySQL – PHP
  10. C# OpenFileDialog 打开文件对话框 打开多文件对话框; 并获取其路径,文件名,扩展名/后缀名
  11. Atom:一些有用的Packages和插件
  12. 产品经理面试习题大汇总
  13. 网页缩放与窗口缩放_缩放—对您的隐私有多严重?
  14. 怎样在微信上发淘宝商品链接?
  15. 初探强化学习(2)rollout算法
  16. 域名解析、域名空间绑定,两种截然不同概念
  17. Python pandas库|任凭弱水三千,我只取一瓢饮(1)
  18. Warzone: 3 (Exogen) vulnhub walkthrough
  19. 量化投资学习-6:谈谈熊市思维转牛市思维,解读牛市踏空和亏本的原因
  20. iOS菜鸟学习——UITextField return键隐藏键盘

热门文章

  1. 不同表_不同电脑剪视频的速度对比表20200617更新;附素材和方法
  2. pyspark 计算 皮尔逊相关系数
  3. 概要设计 重要性_儿童户外游乐场应如何设计-户外游乐设备厂家【经验分享】...
  4. LINE: Large-scale Information Network Embedding
  5. Attention Is All You Need (transformer)
  6. Word2Vec(Efficient Estimation of Word Representations in Vector Space)
  7. 机器学习笔记:(时间序列中的线性回归)如何选择预测变量
  8. sklearn 笔记整理:sklearn.mertics
  9. python函数整理
  10. 打工人的一把辛酸泪,网站提现为啥多于800要扣20%的税?我想这些东西你需要明白