`
budairenqin
  • 浏览: 199903 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySql 常用的数据类型优化

阅读更多
近期要对一个主要用来查询的MySql DB进行优化,所以从书上以及网络上总结了些MySql数据类型相关的优化。

-使用简单的数据类型
越简单的数据类型,需要的CPU周期就越少。
比较两个整数的代价肯定小于比较字符,因为字符集和排序规则让字符更复杂。
日期和时间尽量用MySql内奸的类型来保存,避免使用字符串

-要建索引的列避免NULL
当可空列被索引时,每条记录都需要一个额外的字节。MySql难以优化引用了可空列的查询,这样的列会使索引更加复杂
可以用 0、空字符串等代替NULL,不过把NULL列改为NOT NULL并不会带来明显的性能提升,不要期望太高。

-整数
整数在MySql中有以下类型,后面的注释是他们需要多少位的存储空间
TINYINT // 8位
SMALLINT // 16位
MEDIUMINT // 24位
INT // 32位
BIGINT // 64位

虽然MySql可以对整数类型定义宽度(如:INT(10)),但它不会限制值的范围,对于存储和计算INT(1)和INT(10)是一样的,没有优化的作用

-字符串(仅限于InnoDB的VARCHAR和CHAR)
VARCHAR 可变长度的字符串
  适合最大长度远大于平均长度,并且很少发生更新的场景。(更新的时候可能引起额外工作:如果行的长度增加并不再适合于原始位置时,InnoDB可能要进行分页)
还有要注意的是,VARCHAR要尽量分配真正需要的空间,因为mysql通常会分配固定大小的内存块来保存值,对于排序或基于内存的临时表,把VARCHAR限制的更小显然更好。
CHAR固定长度的字符串
  适合存储很短或长度基本相同的字符串。对于经常被更新的值,固定长度的行不易产生碎片。

-ENUM
有时可以用ENUM代替字符串,ENUM可以存储65535个不同字符串,还有mysql会根据列表中值的数量,把它压缩到1到2个字节中

-时间
DATETIME
  精度为秒,mysql把它封装在一个格式为YYYYMMDDHHMMSS的整数中,占8个字节
TIMESTAMP
  格林尼治时间以来的秒数,精度依然为秒,占4个字节,mysql有两个函数:FROM_UNIXTIME和UNIX_TIMESTAMP来让日期和时间戳相互转换

由于TIMESTAMP比DATETIME更省空间,通常应该优先使用TIMESTAMP。
另外mysql事件的最细粒度为秒,如果需要秒以下精度的时间,可以使用BIGINT类型保存为时间戳

-特殊类型的数据
以前经常用VARCHAR(15)列来保存IP地址。其实IP地址实际是一个无符号的32为整数,而不是字符串。使用小数点进行分割纯粹是为了增加可读性。应该使用无符号整数来保存IP地址,
mysql提供了INET_ATON和INET_NTOA函数在IP地址和整数之间相互转换。
分享到:
评论

相关推荐

    mysql数据库sql优化

    目录 1. SQL优化 1 1.1. 优化实战 1 1.1.1. 策略1....字符类型加引号 8 1.1.10. 策略10.OR改UNION效率高 9 1.1.11. 测试题 9 1.2. 批量导入 11 1.2.1. insert语句优化; 11 1.2.2. LOAD DATA INFLIE 11

    dearxuany#Sharon_Technology_learning_note#database MySQL 数据类型优化1

    MySQL 数据类型优化数据类型选择原则选择不会超过范围的最小类型占更少资源、CPU周期更少(整形比字符代价更低)使用简单的数据类型使用mysql内建类型存储日

    MySQL数据库技巧MySQL优化之数据类型的使用

    MySQL查询优化系列讲座之数据类型和效率  这一部分提供了怎么选择数据类型来帮助提高查询运行速度的一些指导 你下了之后你才认为这10分花的是值的。。。。。。

    MYSQL优化-一篇很好的优化文章

    16. MYSQL如何次存储数据 17. MYSQL表类型 18. MYSQL行类型(专指IASM/MYIASM表) 19. MYSQL缓存 20. MYSQL表高速缓存工作原理 21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不...

    MySQL技术内幕 SQL编程及优化.pdf

    1.基础篇 1.1 explain执行计划 ...3.1优化表的数据类型逆规范化 3.2提高查询速度 4.锁问题 4.1MyISQM表锁 4.2InnoDB锁问题 5.优化MySQL Server 5.1MySQL体系结构概览内存管理及优化 5.2InnoDB log机制及优化

    mysql优化及基础面试题

    mysql优化及基础面试题。 什么是慢查询 慢查询日志,顾名思义,就是查询慢的日志,是指 mysql 记录所有执行超过 long_query_time 参数设定的时间阈值的 SQL 语句的日志。...当一个列可以选择多种数据类型时 。

    Mysql性能优化教程

    Mysql 执行优化 2 认识数据索引 2 为什么使用数据索引能提高效率 2 如何理解数据索引的结构 2 优化实战范例 3 认识影响结果集 4 影响结果集的获取 4 影响结果集的解读 4 常见案例及优化思路 5 理解执行状态 7 常见...

    MySQL操作之JSON数据类型操作详解

    上一篇文章我们介绍了mysql数据存储过程参数实例详解,今天我们看看MySQL操作之JSON数据类型的相关内容。 概述 mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql...

    mysql优化.xmind

    MySQL的优化思维导图,主要是从 数据类型的优化 索引 设计优化 选择合适的储存引擎 等四个方面 进行了详细的讲述

    MYSQL优化.xmind

    mysql优化的脑图文件,已经涵盖了几乎所有情况,分别从“性能监控”,“schema与数据类型优化”,“索引优化”,“查询优化”,“分区表”,“参数设置”这几个方面展开的脑图,是您查找资料的好工具。当然,如果你...

    Mysql数据库优化详细大全

    16. MYSQL如何次存储数据 7 17. MYSQL表类型 8 18. MYSQL行类型(专指IASM/MYIASM表) 8 19. MYSQL缓存 8 20. MYSQL表高速缓存工作原理 9 21. MYSQL扩展/优化-提供更快的速度 9 22. MYSQL何时使用索引 10 23. MYSQL...

    mysql优化/pdf

    这包括使用适当的数据类型、使用正确的索引和避免不必要的表连接。 ## 4. 优化查询 优化查询可以显著提高MySQL的性能。这包括使用正确的查询、避免全表扫描和使用合适的索引。 ## 5. 使用缓存 使用缓存可以减少...

    Mysql的性能优化

    Mysql 执行优化 2 认识数据索引 2 为什么使用数据索引能提高效率 2 如何理解数据索引的结构 2 如何理解影响结果集 3 理解执行状态 4 常见分析手段 4 分析流程 6 总结 7 Mysql 运维优化 9 存储引擎类型 9 内存使用...

    三种常用的MySQL 数据类型

    MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是...

    MySQL数据类型优化原则

    MySQL支持的数据类型很多,选择正确的数据类型对于高性能至关重要。下面几个简单的原则都有助于做出更好的选择。 更小的通常更好 应该尽量使用可以正确储存数据的最小数据类型。更小的数据类型通常更快,因为它们...

    MySQL数据库性能优化分析.pdf

    不仅如此,数据的同一程度也需要重视,如果数据类型不同,就可能会导致转化隐含某些数据的情况发生并因此增加操作难度,也造成了不必要的浪费。在排序时,最好是将字段的不同顺序当作排列的指标。不仅如此,还有一个...

    MySQL千万数据解决方案

    方案二:升级数据库类型,换一种100%兼容mysql的数据库。优点:不影响现有业务,源程序不需要修改代码,你几乎不需要做任何操作就能提升数据库性能,缺点:多花钱 方案三:一步到位,大数据解决方案,更换newsql/...

    MySQL教程SQL优化

    MySQL教程SQL优化 MySQL 是一种流行的开源关系数据库管理系统,广泛应用于各种 Web 应用程序中。随着数据量的增加,数据库的性能变得越来越重要。因此,MySQL 优化是保证数据库性能的关键步骤。本文将详细介绍 ...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 04redis数据类型操作.mp4 │ 04安装search-guard.docx │ 05redis主从和哨兵操作.mp4 │ 06reids集群创建收缩扩容.mp4 │ 07redis运维工具.mp4 │ Elasticsearch分享V2.pdf │ Elasticsearch分享V4.pdf │ ES分享...

    2021年MySQL高级教程视频.rar

    18.MySQL高级锁InnoDB行锁类型.avi 19.MySQL高级锁InnoDB行锁基本演示.avi 20.MySQL高级锁InnoDB行锁行锁升级为表锁.avi 21.MySQL高级锁InnoDB行锁间隙锁危害.avi 22.MySQL高级锁InnoDB行锁争用情况查看.avi 23....

Global site tag (gtag.js) - Google Analytics