iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据类型优化原则
  • 607
分享到

MySQL数据类型优化原则

MySQL数据类型MySQL数据类型优化 2022-05-31 07:05:35 607人浏览 独家记忆
摘要

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

Mysql支持的数据类型很多,选择正确的数据类型对于高性能至关重要。下面几个简单的原则都有助于做出更好的选择。

  • 更小的通常更好

应该尽量使用可以正确储存数据的最小数据类型。更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。如果无法确定哪个数据类型时最好的,就选择你认为不会超过范围的最小类型。

  • 简单就好

简单数据类型的操作通常需要更少的CPU周期。例如,整形比字符操作代价更低,因为字符集和校对规则(排序规则)使字符比较比整形更复杂。比如用MySQ内建的类型而不是使用字符串来存储日期和时间、应该用整形存储IP地址。

  • 尽量避免null

如果查询中包含可为null的列,对mysql来说更难优化,因为可为null的列使得索引、索引统计和值比较都较为复杂。可为null的列会使用更多的存储空间,在Mysql里也需要特殊处理。当可为null当列被索引时,每个索引记录需要一个额外的字节,在MyISAM里甚至还可能导致固定大小的索引变成可变大小的索引。

通常把可为null的列改为not null带来的性能提升比较小,所以没有必要在现有的架构中查找并修改这种情况,除非确定这回导致问题。

例外的是在InnoDB使用独立的位存储null值,所以对于稀疏数据(很多值为null,只有少数行的列有非null值)有很好的空间效率,但这一点不适用于MyISAM。

在为列选择数据类型时。

第一步需要确定合适的大类型:数字、字符串、时间等
第二步是选择具体类型。MySQL的很多数据类型都可以存储相同类型的数据,只是存储的长度和范围不一样、允许的精度不一样,或者需要的物理空间不同。

整数类型

存储整数可以用这几种类型

类型 存储位数
tinyint 8
smallint 16
mediumint 24
int 32
bigint 64

它们可以存储的值的范围-2^(N-1)^到2^(N-1)^-1,其中N是存储空间的位数。
整数类型还有可选有符号属性,表示不允许负值,这可以使正数的上限提高一倍。如tinyint无符号可以存储的范围是0到255,但他允许负值但存储范围是-128到127。

MySQL选择不同的整数类型是决定怎么在内存和磁盘中保存数据的。但是在整数计算一般使用64位但bigint整数,即使32位环境也是一样。(除了聚合函数)

MySQL还可以为整数类型指定宽度。如int(11),但是它不会限制值的合法范围,只是规定了MySQL的一些交互工具(如SQLyog,navicat)用来显示字符的个数。对于存储和计算来说,int(1)和int(11)是相同的。

实数类型

实数是带有小数部分的类型。MySQL中可以用decimal、float和double来存储实数类型。

float和double类型支持使用标准的浮点运算进行近似计算。
decimal类型用于存储精确的小数,在MySQL5.0以及更高的版本中,MySQL服务器自身实现了decimal的高精度计算。

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储,double使用8个字节存储,相比flaot有更高的精度和更大的范围。在浮点计算时,MySQL都使用的double作为内部浮点计算的类型。

在考虑对小数进行精确计算时,使用decimal(如财务数据),但在数据量大时,可以考虑使用bigint代替decimal,将需要存储但货币单位根据小数的位数乘以相同的倍数存储。这样可以避免decimal精确计算代价高的问题。

float和double使用的是cpu支持的原生浮点计算,所以快。
decimal是MySQL服务器自身实现的高精度计算。

字符串类型

varchar和char是两种最主要的字符串类型。

varchar

varchar类型用于存储可变长字符串,是最常见的字符串数据类型。它比定长类型更节省空间,因为它仅使用必要的空间。

varchar需要使用1个或2个额外字节记录字符串长度:如果列的最大长度小于或等于255字节,则只使用1个字节表示,否则使用2个字节。

varchar节省了存储空间,所以对性能也有帮助。但是,由于行是变长的,在update时可能使行变得比原来更长,这就导致需要做额外的工作。因为行占用的空间增长,并且在页内没有更多的空间可以存储。这种情况下,MyISAM会将行拆成不同的片段存储,InnoDB需要分裂页来使行可以放进页内。其他一些存储引擎也许不在原数据位置更新数据。

使用varchar最合适的场景是:在字符串列的最大长度比平均长度大很多;列更新很少(碎片不是问题);使用了像utf-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。

使用varchar(5)和varchar(200)存储‘hello'的空间开销是一样的,但是使用更长的列会消耗更多的内存,MySQL通常会分配固定大小的内存快来保存内部值。尤其是使用内存临时表进行排序或操作时会特别糟糕,在利用磁盘临时表进行排序同样糟糕。所以最好的策略是只分配真正需要的空间。

char

char类型是定长的。MySQL总是根据定义的字符串长度分配足够的空间。当存储char值时,MySQL会删除所有的末尾空格。char值会根据需要采用空格进行填充以方便比较。

char适合存储很短的字符串,或者所有值都接近同一个长度。例如密码的MD5值。对于经常变更的数据,char也比varchar更好,因为定长的char不容易产生碎片。对于非常短的列,char比varchar在存储空间上也更有效率,因为varchar需要额外字节记录长度。

以上就是MySQL数据类型优化原则的详细内容,更多关于MySQL数据类型优化的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据类型优化原则

本文链接: https://www.lsjlt.com/news/9945.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据类型优化原则
    MySQL支持的数据类型很多,选择正确的数据类型对于高性能至关重要。下面几个简单的原则都有助于做出更好的选择。 更小的通常更好 应该尽量使用可以正确储存数据的最小数据类型。更小的数据类型通常更快,因为它...
    99+
    2022-05-31
    MySQL 数据类型 MySQL 数据类型优化
  • MySQL 数据类型选择原则
    目录小而美简单至上避免空值选择数据类型的步骤数据类型介绍一、串数据类型二、数值数据类型三、日期和时间数据类型四、二进制数据类型结语:小而美 通常来说,尽可能使用占用存储空间小的数据类型来存储数据。这类数据类型通常也...
    99+
    2022-05-14
    MySQL 数据类型
  • 原来MySQL 数据类型也可以优化
    目录不超过范围的情况下,数据类型越小越好简单就好尽量避免 null一些细则整数类型字符和字符串类型varchar :根据实际内容长度保存数据。char:固定长度的字符串BL...
    99+
    2022-11-13
  • 原来MySQL 数据类型也可以优化
    目录不超过范围的情况下,数据类型越小越好简单就好尽量避免 null一些细则整数类型字符和字符串类型varchar :根据实际内容长度保存数据。char:固定长度的字符串BLOB 和 TEXT 类型日期时间dat...
    99+
    2022-08-26
  • MySQL 数据类型及最优选取规则
    目录数据类型整型浮点型定点数字符型日期时间型字段类型的选取原则数据类型 日常开发中,最常使用到的 MySQL 中常用的数据类型有 : 整型, 浮点型, 定点数, 字符型, 时间日期类...
    99+
    2022-11-13
  • MySQL 数据类型及最优选取规则
    目录数据类型整型浮点型定点数字符型日期时间型字段类型的选取原则数据类型 日常开发中,最常使用到的 mysql 中常用的数据类型有 : 整型, 浮点型, 定点数, 字符型, 时间日期类型. 下面对其分别进行总结。 整型 ...
    99+
    2022-08-26
  • MYSQL(三)数据类型的优化选择
    整数类型:Tinyint-8Smallint-16Mediumint-24Int-32Bigint-64实数类型(带有小数部分的数字)Float-4/double-8:浮点Decimal:精确(只是存储格式...
    99+
    2022-10-18
  • MySQL中的数据类型和schema优化
    最近在学习MySQL优化方面的知识。本文就数据类型和schema方面的优化进行介绍。 1. 选择优化的数据类型 MySQL支持的数据类型有很多,而如何选择出正确的数据类型,对于性能是至关重要的。以下几个原则能够帮助确定数据类型: 更小的通...
    99+
    2022-04-18
    MySQL中的数据类型和schema优化 数据库入门 数据库基础教程 数据库 mysql
  • MySQL--索引优化原则
    索引优化原则 1、最左前缀匹配原则,联合索引,mysql会从做向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3...
    99+
    2022-10-18
  • MySQL语句的优化原则
    这篇文章主要讲解了“MySQL语句的优化原则”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL语句的优化原则”吧!1、使用索引来更快地遍历表。  缺省...
    99+
    2022-10-18
  • mysql优化和类型
    MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。int(M) 在 integer 数据类型中,M 表示最大显示宽度,该可选显示宽度规定用于显示宽度小于指定的列宽度的...
    99+
    2022-10-18
  • MySQL如何优化Schema与数据类型性能
    本文主要给大家介绍MySQL如何优化Schema与数据类型性能,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL如何优化Schema与数据类型...
    99+
    2022-10-18
  • 详解MySQL中的数据类型和schema优化
    最近在学习MySQL优化方面的知识。本文就数据类型和schema方面的优化进行介绍。 1. 选择优化的数据类型 MySQL支持的数据类型有很多,而如何选择出正确的数据类型,对于性能是至关重要的。以下几个原则能够帮助...
    99+
    2022-05-19
    MySQL 数据类型 MySQL schema优化
  • MySQL数据库的索引原理与慢SQL优化的5大原则
    我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。 本文旨在以开发工程师的角度来解释数...
    99+
    2023-02-18
    MySQL数据库的索引原理与慢SQL优化原则 MySQL建立索引的原则 MySQL慢查询优化基本步骤 MySQLexplain使用
  • Mysql慢查询优化方法及优化原则
    1、日期大小的比较,传到xml中的日期格式要符合'yyyy-MM-dd',这样才能走索引,如:'yyyy'改为'yyyy-MM-dd','yyyy-MM'改为'yyyy-MM-dd'【这样MYSQL会转换为...
    99+
    2022-10-18
  • 深入理解MySQL数据类型的选择优化
    目录前言1 整数类型2 实数类型3 字符串类型3.1 VARCHAR和CHAR类型3.1.1 最大长度3.2 Binary和VarBinary类型3.3 BLOB和TEXT类型3.3 ENUM类型4 日期和时间类型5 位...
    99+
    2022-08-10
    MySQL数据类型 MySQL选择优化
  • MySQL中的数据类型和schema优化是什么
    小编给大家分享一下MySQL中的数据类型和schema优化是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!1. 选择优化的数据类型MySQL支持的数据类型有很多,而如何选择出正确的数据类型...
    99+
    2022-10-18
  • varchar类型数据查询优化
    ...
    99+
    2022-10-18
  • SQL数据库的优化原则有哪些
    这期内容当中小编将会给大家带来有关SQL数据库的优化原则有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。关于SQL数据库优化的原则主要可以从以下几个方面着手:设计方面...
    99+
    2022-10-19
  • MySQL数据类型 - JSON数据类型 (2)
    JSON值的规范化、合并和自动包装 当一个字符串被解析并发现是一个有效的JSON文档时,它也会被规范化。这意味着,具有与稍后在文档中找到的键(从左到右)重复的键的成员将被丢弃。JSON_OBJECT()调用生成的对象值只包含第二个key1元...
    99+
    2019-09-03
    MySQL数据类型 - JSON数据类型 (2) 数据库入门 数据库基础教程 数据库 mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作