最近想在建mysql数据库的时候就考虑到一些性能方面的事情。怎么样才能在建表的时候就提升整张表的性能呢。唯有在数据类型上下点功夫了。

一、mysql建表的数据类型标准

1、选用占字节较小的

  一般情况下,应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为他们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。

  2)简单就好

  简单数据类型的操作通常需要更少的CPU周期

  3)尽量避免NULL

  许多表都包含可为NULL(空值)的列,记事应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性。通常情况下,最好制定列为NOT NULL,除非真的需要存储NULL。

二、mysql的int,bigint,smallint和tinyint

1、int

从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int也是最常用的,存储整型的一个数据类型。

2、bigint

从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
      有时候我们用int存储数据的时候,会出现存储数据恒为:2147483647的情况,这是因为我们存储的内容已经超过了int类型的范围。因此需要用bigint类型来存储。

3、smallint

从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。
顾名思义,这个small是存储更小的内容时候使用的。

4、tinyint
      一个微小的整数,支持 -128到127(SIGNED),0到255(UNSIGNED),需要1个字节存储
此类型一般用来存储大小不会超过额定大小的整型。比如存储单个状态值,1,2,3等。用这个类型来存储最为合适。

三、mysql的varchar和char

char属于定长类型,varchar属于非定长类型,varchar属于变长。可能有人会问为什么varchar长度比数据长度大呢?因为VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255,长度前缀是两个字节,否则是一个字节。

由于现在大部分mysql用户使用的都是InnoDB存储引擎,因此建议使用varchar来存储字符串。

原因:对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行都使用指向数据列值的头指针),因此在本质上,使用固定长度的CHAR列不一定比使用可变长度VARCHAR列简单。因而,主要的性能因素是数据行使用的存储总量。由于CHAR平均占用的空间多于VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总量和磁盘I/O是比较好的。

参考链接:http://blog.csdn.net/hsd2012/article/details/51546240

end

mysql的数据类型以及性能优化相关推荐

  1. 读薄《高性能MySql》(四)查询性能优化

    读薄<高性能MySql>(一)MySql基本知识 读薄<高性能MySql>(二)Scheme与数据优化 读薄<高性能MySql>(三)索引优化 读薄<高性能M ...

  2. Mysql批量插入更新性能优化

    Mysql批量插入更新性能优化 对于数据量较大的插入和更新,因io/cpu等性能瓶颈,会产生大量的时间消耗,目前主流的优化主要包括预编译.单条sql插入多条数据.事务插入等,下面详细介绍一下: 单条插 ...

  3. 【性能优化】MySQL 数据库连接原理和性能优化 - 学习/实践

    1.应用场景 学习MySQL数据库连接原理和性能优化, 开发高性能程序. 2.学习/操作 1. 文档阅读 MySQL 数据库连接原理和性能优化 - 高性能 MySQL 实战 | Laravel 学院 ...

  4. 浅析Mysql Join语法以及性能优化

    在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧,这里我有个比较简便的记忆方法,内外联结的区别是内联结将去除所有不符合条件的记录,而外联结则 ...

  5. mysql笔记03 查询性能优化

    查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...

  6. mysql join 与 cross join 效率_浅析Mysql Join语法以及性能优化

    在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧,这里我有个比较简便的记忆方法,内外联结的区别是内联结将去除所有不符合条件的记录,而外联结则 ...

  7. 熟悉mysql数据库设计和性能优化_Mysql数据库性能优化

    Mysql数据库性能优化,可以从下面三点入手: 数据库设计 SQL语句优化 架构优化 一.数据库设计优化 1.适度的违反范式,适度    遵循三大范式就会带来查询时经常需要join,导致查询效率降低 ...

  8. mysql客户端工具_性能优化-理解 MySQL 体系结构(MySQL分库分表)

    实例和数据库 我们通常所说的 MySQL 数据库服务器由一个实例(instance)以及一个数据库(database)组成.实例包括一组后台进程/线程和许多内存结构,用于管理数据库:数据库由一组磁盘文 ...

  9. mysql 慢查询优化_MySQL 性能优化之慢查询

    性能优化的思路 首先需要使用慢查询功能,去获取所有查询时间比较长的SQL语句 其次使用explain命令去查询由问题的SQL的执行计划(脑补链接:点我直达1,点我直达2) 最后可以使用show pro ...

最新文章

  1. 两道面试题,带你解析Java类加载机制
  2. Centos6.5 下安装opencv
  3. Docker(四):Docker 三剑客之 Docker Compose
  4. json相关,浏览器打开json格式的api接口时,进行格式化,chrome插件
  5. 让产品经理GC的文本段落两端对齐css
  6. java properties 保存_Java 读写Properties配置文件
  7. @vue/cli 3 运行支持报错 socket
  8. 数字风控全流程 实操课程V2.0 第三期
  9. ASP 中调用函数关于Call使用注意的问题
  10. 在苹果Mac中如何一键转换繁体与简体中文?
  11. 平衡二叉树平衡因子怎么计算_110. 平衡二叉树
  12. 阶段3 2.Spring_05.基于XML的IOC的案例1_4 注解IOC案例-把自己编写的类使用注解配置...
  13. pandoc如何使用自定义样式导出docx文档
  14. mac电脑投屏到小米盒子_苹果手机搜不到小米盒子怎么办?
  15. linux lpte_所有的linux和unix的指令行下的指令都一样吗
  16. 微信公众号已认证怎么改名字,公众号昵称可以改吗?
  17. pr使用视频素材技巧
  18. 主网已经上线的币有哪些_主要币种主网上线时间(超全)
  19. c语言字符幂函数怎么编写,c语言幂函数_C ++中的幂函数
  20. 在线副业教程之 02 你学的越多,你赚的越多+你必须开始学习的5个最好的在线副业

热门文章

  1. linux输入文件后怎么保存不了怎么办,关于linux:输入数据后为什么不能保存VI文件?...
  2. python logsumexp示例
  3. paddleocr 训练自己的数据
  4. 查看网页js数据接口
  5. server2016 查看图片 预览图片
  6. hi3559 h264
  7. python3 实现 websocket server 解决中文乱码
  8. 通俗讲解傅里叶变换fft
  9. jdbc获取mysql 列信息_JDBC获取数据库信息:获取表中各列的信息
  10. centos7开启,关闭防火墙