mysql 数据类型优化

  1. 更小的通常更好
  2. 简单就好
  3. 尽量避免null

一、整数类型

有两种类型的数字 :整数和实数。如果存储整数,可以使用这几种整数类型:TINYINT,SMALLINT,DEDIUMINT,INT,BIGINT.分别使用8,16,24,32,64位存储空间。

使用UNSIGNED属性,表示不允许复制,这大致可以例正数的上限提高一倍。

二、实数类型

实数是带有小数部分的数字。然而,它们 不只是为了存储小数部分;也可以使用DECIMAL存储比BIGINT还大的整数。MySQL既支持精确类型,也支持不精确类型。

DECIMAL类型用于存储精确的小数。因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用DECIMAL--例如存储财务数据。但在数量比较大的时候,可以考虑使用BIGINT代替DECIMAL,将需要存储的货币单位根据小数的位数乘以相应的倍数即可。假设要存储财务数据精确到万分之一分,则可以反所有金额乘以一百万,然后将结果存储在BIGINT里这样可以同时避免浮点计算不精确和DECIMAL精确计算代价高的问题。

三、字符串类型

VARCHAR和CHAR是两种最主要的字符串类型。

VARCHAR类型用于存储可变长字符串,如果MySQL表使用了ROW_FORMAT=FIXED创建的话,每一行都会使用定长存储,这会很浪费空间。VARCHAR需要使用1或2个额外的字节记录字条串的长度

CHAR类型是定长,CHAR适合存储很短的字符串,或者所有值都接近同一个长度。比如MD5值,因为这是一个定长的值。

对于经常变更的数据,CHAR也比VARCHAR更好,因为定长的CHAR 类型不容易产生碎片。

慷慨是不明知的:

时间: 2024-11-08 19:16:09

mysql 数据类型优化的相关文章

mysql 数据类型优化(四) ---选择标识符,特殊类型数据

一.选择标识符 一旦选定了一种类型,要确保在所有关联中都使用同样的类型,类型之间需要精确匹配,包括像UNSIGNED这样的属性. 问题:在比较操作时隐式的类型转换也可能导致很难发现的错误. (1)整数:通常是标识列最好的选择,因为它他们很快并且可能使用AUTO_INCREMENT. (2)ENUM和SET类型:通常是是不能用的. (3)字符串类型:如果可能,应该避免使用字符串类型作为标识列,因为它们很消耗空间,并且通常比数字类型慢. 对于完全"随机"的字符串也需要多加注意,例如MD5(

MySQL数据类型优化—整数类型优化选择

原文:http://bbs.landingbj.com/t-0-240002-1.html 在设计数据库的时候,整数类型的使用时不可避免的如ID,类型等. 在选择整数的同时主要是考虑是数据范围,如是否带符号,最大存储值. 一.有误符号 在无符号unsigned类型比有符号的整数多一倍. 如 tinyint 范围 -128~127 tinyint unsigned 范围 0~255 这里的tinyint unsigned比tinyint 最大数多一倍,其它的同理. 如果我们的范围 1-200,如果

高性能MySQL(四)—Schema与数据类型优化(1)

Schema与数据类型优化 选择优化的数据类型 下面是一些简单的原则: 更小的通常更好 一般情况下,应该尽量使用可以正确存储的最小数据类型.如:只需要存储0-200, tinyint unsigned就比较好.小的数据类型占的磁盘.内存和CPU缓存都较少,并且处理时需要的CPU周期数也更少. 简单就好 简单数据类型额操作通常需要更少的CPU周期.如:应该使用MySQL的內建类型来存储时间和日期而不是字符串.如:应该用整型存储IP地址. 尽量避免null 通常情况下最好指定列为NOT NULL,除

mysql笔记01 Schema与数据类型优化

Schema与数据类型优化 1. 选择优化的数据类型 1). 更小的通常更好:更小的数据类型通常更快,因为他们占用更少的磁盘.内存和CPU缓存,并且处理需要的CPU周期也更少. 2). 简单就好:简单的数据类型的操作通常需要更少的CPU周期.例如:整型比字符串操作的代价更低,因为字符集和校对规则(排序规则)是字符串比较比整型比较更复杂.这里有两个例子: 一个是应该使用MySQL内建的类型而不是字符串来存储日期和时间,另外一个是应该使用整型存储IP地址. 3). 避免使用null:通常情况下最好指

MySQL架构优化实战系列1:数据类型与索引调优全解析

一.数据类型优化 数据类型 整数   数字类型:整数和实数 tinyint(8).smallint(16).mediuint(24).int(32).bigint(64) 数字表示对应最大存储位数,如 tinyint (-127 --- 128),tinyint unsigned 表示不允许负数,则范围为 (0 -- 255). 常规数据库中 int(11) 只是表示控制显示字符的个数是11个,int(1) 和 int(20) 存储和计算是一样的,即 int(1) 照样可以存储1111(4位数)

MySQL 基础数据类型优化(如何选择数据类型)

前言: 最近在看高性能 MySQL,记录写学习笔记: 高性能 MySQL 学习笔记(二) Schema与数据类型优化 笔记核心内容:MySQL 如何选择正确的数据类型,各数据类型的差异: // 不要小看 MySQL 数据类型对性能的重要性, 当你的系统体量到达一定程度时,就知道这里的性能差异了. 一.选择优化的数据类型 // 更小的通常越好 尽量选择使用可以正确存储数据的最小数据类型.更小的数据类型通常更快, 因为它们占用更少的磁盘.内存和 CPU 缓存,并且处理时需要的 CPU 周期也更少:

《高性能MySQL》读书笔记--Schema与数据类型优化

1.慢查询 当一个资源变得效率低下的时候,应该了解一下为什么会这样.有如下可能原因:1.资源被过度使用,余量已经不足以正常工作.2.资源没有被正确配置3.资源已经损坏或者失灵因为慢查询,太多查询的实践过长而导致堆积在逻辑上.慢查询到底是原因还是结果?在深入调查前是无法知晓的.记住,在正常的时候这个查询也是正常运行的.一个查询需要filesort和创建临时表并不一定意味着就是有问题的.尽管消除filesort和临时表通常来说是"最佳实践". 2.MySQL数据类型 更小的通常更好:一般情

mysql的schema与数据类型优化分析

Schema与数据类型优化: 1.选择优化的数据类型 更小的通常更好:一般情况下,尽量使用可以正确存储数据的最小数据类型 如:只需存0-200,tinyint unsigned更好. 简单就好:如:整型比字符串操作代价更低,应该使用mysql内建类型而不是字符串来存储日期和时间. 尽量避免NULL:通常情况下最好指定列为NOT NULL,除非真的要存储NULL值.如:查询中包含可为NULL的列对mysql来说更难优化. 2. 选择类型范围 如DATETIME和TIMESTAMP列都可以存储相同类

MySQL Schema与数据类型优化

Schema与数据类型优化 选择优化的数据类型 1.更小的通常更好 更小的数据类型通常更快,因为它们占用更少的磁盘,内存和CPU缓存 2.简单就好 简单数据类型的操作通常需要更少的CPU周期.例如:整型比字符操作代价更低,因为字符集和校对规则使字符比较比整型比较更复杂 3.尽量避免NULL 通常情况下最好制定列为NOT NULL,除非真的需要存储NULL值. 如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引.索引统计和值比较都更复杂.可为NULL的列会使用更