mysql创建表时字段类型选择与优化
一、选择原则
1.应该尽量使用可以正确存储数据的最小字段类型
2.选用简单的数据类型,例如:一个是尽量用mysql内置的字段类型来存储日期和时间;另一个存储IP地址尽量用整型;能用整型的尽量不用字符串类型
3.尽量避免使用NULL,例如:打算创建索引的字段,不要设置为NULL
二、常用的字段类型的选择说明
1.日期和时间类型
TIMESTAMP与DATETIME都可以存储相同类型的数据,并且精确到秒,可是TIMESTAMP只使用DATETIME一半的存储空间,并且它可以根据时区变化,具有特殊的自动更新能力。
存储空间:TIMESTAMP占用4个字节,DATETIME占用8个字节
mysql> select current_timestamp;
+---------------------+
| current_timestamp |
+---------------------+
| 2018-07-21 15:56:39 |
+---------------------+
1 row in set (0.00 sec)
这两个类型存储的数据格式类似:2018-07-21 15:56:39
将这个值转换成时间戳
mysql> select unix_timestamp('2018-07-21 15:56:39');
+---------------------------------------+
| unix_timestamp('2018-07-21 15:56:39') |
+---------------------------------------+
| 1532159799 |
+---------------------------------------+
1 row in set (0.00 sec)
将时间戳转换成标准时间
mysql> select from_unixtime('');
+-----------------------------+
| from_unixtime('') |
+-----------------------------+
| 2018-07-21 15:56:39.000000 |
+-----------------------------+
1 row in set (0.00 sec)
2.整数类型
tinyint(8bit), smallint(16bit), mediumint(24bit), int(32bit), bigint(64bit)
整数计算一般使用64位的bigint整数,一个细节需要注意的地方,INT(1)与INT(20)对于存储和计算来说宽度是相同的,对于INT型字段来说指定宽度是多余的
3.实数类型
浮点类型(float, double)与decimal类型在性能上,浮点类型更好一些,同样范围的值,浮点类型比decimal占用更少的空间
mysql创建表时字段类型选择与优化的更多相关文章
- MySQL 创建表时,设置时间字段自己主动插入当前时间
MySQL 创建表时,设置时间字段自己主动插入当前时间 DROP TABLE IF EXISTS `CONTENT`; CREATE TABLE `CONTENT` ( `ID` char(20) N ...
- oracle与mysql创建表时的区别
oracle创建表时,不支持在建表时同时增加字段注释.故采用以下方式: #创建表CREATE TABLE predict_data as ( id integer ), mid ), time dat ...
- mysql 创建表时注意事项
mysql 创建表时注意事项 mysql 想必大家都不会陌生吧 是我学习中第一个接触的的数据库 已学习就很快上手的 这是一个关系型数据库 不懂什么是关系型数据库 啊哈哈哈 现在知道啦 因 ...
- MySQL创建表时加入的约束以及外键约束的的意义
1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...
- mysql创建表时,设置timestamp DEFAULT NULL报错1067 - Invalid default value for 'updated_at'
问题背景: 线上的linux服务器上的mysql服务器中导出数据库的结构.想要在本地创建一个测试版本 导出后再本地mysql上运行却报错 1067 - Invalid default value ...
- Mysql 创建表时错误:Tablespace for table `tablexx` exists. Please DISCARD the tablespace before IMPORT.
在本地的一个数据库创建表时意外的出现了以下错误,说是表已经存在了 但通过desc 查看表信息时又说表不存在 在本地系统搜索表名却发现一个.ibd文件[InnoDB File] 在删除了该.ibd文件文 ...
- (转)mysql创建表时反引号的作用
试用navicat工具查看现网mysql建表语句时,发现表名和字段名都是反引号引起来的 CREATE TABLE `tab_notice_title_tv` ( `i_id` int(11) NOT ...
- mysql创建表时反引号的作用
试用navicat工具查看现网mysql建表语句时,发现表名和字段名都是反引号引起来的 CREATE TABLE `tab_notice_title_tv` ( `i_id` ) NOT NULL A ...
- Access sql语句创建表及字段类型
创建一张空表: Sql="Create TABLE [表名]" 创建一张有字段的表: Sql="Create TABLE [表名]([字段名1] MEMO NOT NUL ...
随机推荐
- 神经网络 OCR 参考
1. https://blog.csdn.net/u010159842/article/details/87271554 2. https://blog.csdn.net/weixin_4286104 ...
- MACOS安装使用kafka
安装(会自动依赖安装zookeeper) brew install kafka 启动zookeeper cd /usr/local/Cellar/kafka/2.1.1/bin/ ./zookeepe ...
- UGUI的图集处理方式-SpriteAtlas的前世今生
最糟糕的是人们在生活中经常受到错误志向的阻碍而不自知,真到摆脱了那些阻碍时才能明白过来. —— 歌德 说到UGUI的图集初学者可能觉得没什么难度,包括我刚开始接触的时候也是,甚至你在开发的时候只需要把 ...
- java后台图片上传预检失败解决方案
1.首先因为服务器端会先发送一个option请求到后台 在后台返回一个post给页面 页面在处理post请求给接口 2.先写一个过滤器, 我们自己定义一个过滤器 package com.adtime ...
- Android环境配置(Eclipse全开发环境下载)
Android环境配置 前期准备 Android环境的Eclipse: 网站链接:https://www.runoob.com/w3cnote/android-tutorial-eclipse-adt ...
- java实现查找PDF关键字所在页码及其坐标
1.因为最近有这方面的需求,用过之后记录一下. 2.此功能跟PDF中Ctrl+F性质一样,如果PDF中为图片形式的不支持定位到关键字. import com.itextpdf.awt.geom.Rec ...
- ThreadPoolExecutor执行任务,异常日志缺失问题
之前在使用自定义线程池异步执行耗时任务时,一直记着如果业务方法抛出异常没有捕获,那么是看不到日志框架输出的异常日志的,所以总是在业务方法中包裹一层try-catch捕获可能发生的异常.也未去深入为什么 ...
- HDU-2089不要62-暴力或数位DP入门
不要62 题意:给定区间,求在这个区间中有多少个数字,不包含4且不包含62: 这道题作为数位DP的入门题: 暴力也是可以过 #include<cstdio> #include <io ...
- BZOJ1878[SDOI2009]HH的项链+莫队算法模板
题意:多次询问,求在一个区间中,有多少种珠子: 思路:莫队算法模板题目: 参考:https://www.cnblogs.com/RabbitHu/p/MoDuiTutorial.html #inclu ...
- HDU4289Control 无向图拆点最大流
/* ** 无向图拆点,求最大流,最大流即为割点个数. */ #include <iostream> #include <cstdio> #include <cstrin ...