如何为MySQL选择更合适的数据类型

更小的通常更好

在表设计最开始之初,我认为这里的选择合适的数据类型是非常关键的,他可以尽可能减轻数据库的硬盘占用,和在查询的过程中越简单越小的数据类型则需要的占用了更小的cpu缓存,内存,硬盘,和相对应的处理cpu的周期。

简单就好

数据类型的选择应该保持越简单越好的准则, 比方说整形比起字符类型来说的代价更低,因为字符类型的校对规则和排序规则相对于整形来说更加复杂

应该使用mysql 的内建类型而不是选择字符串来进行存储日期和时间,也应该使用整形来存储ip地址。

尽量避免NULL

而且应该避免使用null类型,因为NULL对MySQL来说会更难进行优化,null列会使得索引、索引统计、和值比较发生更为复杂的变化,并且为null的列会使用更多的储存空间在MySQL中也需要更特殊的处理,当null被索引的时候

每个索引记录会需要一个额外的字节,在myisam 中甚至会导致固定大小的索引(例如只有一个整数列索引)变成可变大小的索引。通常null的列改为not null 带来的性能提升比较小,所以(调优时)没有必要首先在现有的数据表

中查找并且修正 ,除非确定这块会导致问题,但是在计划创建索引的列中,就应该尽量避免设计成null列,但值得一提的是在innodb中使用进行null列的存储是使用单独的位(bit)进行存储null 的值,在大量出现null 的情况,有很好

的空间效率。但这点不适用于myisam。

时间: 2024-08-09 23:36:24

如何为MySQL选择更合适的数据类型的相关文章

小蚂蚁学习mysql性能优化(7)--数据库结构优化--选择合适的数据类型

关于SQL以及索引优化的部分终于学习完了,今天开始进入第二层次的学习,数据库的结构优化,第一部分,选择合适的数据类型. 数据类型的选择,重点在于合适二字. 1.    使用可以存下数据的最小的数据类型 比如,一个时间类型的一个数据,可以使用varchar,可以使用datetime,还可以使用int,如何选择,就看哪一种类型对我们来说是最小的,不言而喻,int类型相对来说是最小的数据类型. 2.    使用简单的数据类型. int类型要比varchar类型在mysql处理上简单的多,用int类型来

Design6:选择合适的数据类型

数据库使用Table来存储海量的数据,细分Table结构,数据最终存储在Table Column中,因此,在设计Table Schema时,必须慎重选择Table Column的Data Type,数据类型不仅决定了Column能够存储的数据范围和能够进行的操作,而且合适的数据类型还能提高查询和修改数据的性能.数据类型的选择标准既要满足业务和扩展性的需求,又要使行宽最小(行宽是一行中所有column占用的Byte).最佳实践:使用与Column最大值最接近的数据类型. 例如,bit 类型只能存储

8.1 第八章 选择合适的数据类型

在使用MySQL 创建数据表时都会遇到一个问题,如何为字段选择合适的数据类型.例 如,创建一张员工表用来记录员工的信息,这时对员工的各种属性如何来进行定义?也许大 家会想,这个问题很简单,每个字段可以使用很多种数据类型来定义,比如int.float.double. decimal 等.其实正因为可选择的数据类型太多,才需要依据一些原则来"挑选"最适合的 数据类型.本章将详细介绍字符.数值.日期数据类型的一些选择原则. 8.1 CHAR 与VARCHAR CHAR 和VARCHAR 类型

MySQL中char与varchar数据类型选择原则

很多地方在分析char与varchar数据类型选择原则上,往往忽略了存储引擎.事实上,我们应当根据选定的存储引擎,确定如何选择合适的数据类型. char与varchar比较 值 char(3) 实际存储字符长度 varchar(3) 实际存储字符长度 " ' ' 3 " 1 'ab' 'ab ' 3 'ab' 3 'abc' 'abc' 3 'abc' 4 'abcdefg' 'abc' 3 'abc' 4 总结:从上表可以看出,char属于定长的. char属于定长类型,varcha

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

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

[每日更新-MySQL基础]5.常用的数据类型-整数和字符串

1.    数据类型 在学习PHP的时候我们已经讲过数据类型了,所谓数据类型就是数据的格式.每一种数据类型在计算机中存储的方式会有差异,占用的存储容量也有区别,所以选择合适的数据类型可以节约我们的存储成本,也方便我们的程序运行和开发效率. 1.1    整数类型 表示:int 在PHP中,要存储一个整数类型需要4个字节,在MYSQL中,这个Int是可以手动指定的,它根据你选择的长度来计算使用的字节数.标准的整数类型也是4个字节. 在定义表的时候,如果选择了int型,那么需要设置一个长度,根据长度

《高性能MySQL》- 04 Schema与数据类型优化

选择优化的数据类型 下面几个简单的原则有助于做出更好的选择: 更小的通常更好.一般情况下,尽可能使用可以正确存储数据的最小数据类型.它们通常更快,站更少的磁盘,内存和cpu缓存.但需要确保没有低估存储的值的范围 简单就好.简单数据类型通常也是需要更少的cpu周期.例如,整型比字符操作代价更低.有两个需要先记着,一个是使用MySQL的内建类型,而不是字符串来创建时间,第二个是用整型存储IP地址.之后会讨论 尽量避免NULL.通常情况下最好指定为NOT NULL,除非需要用到NULL.如果查询中包含

【转】如何选择一个合适的磁珠BEAD

在产品数字电路EMC 设计过程中,我们常常会使用到磁珠,那么磁珠滤波地原理以及如何使用呢? 铁氧体材料是铁镁合金或铁镍合金,这种材料具有很高的导磁率,他可以是电感的线圈绕组之间在高频高阻的情况下产生的电容最小.铁氧体材料通常在高频情况下应用,因为在低频时他们主要程电感特性,使得线上的损耗很小.在高频情况下,他们主要呈电抗特性比并且随频率改变.实际应用中,铁氧体材料是作为射频电路的高频衰减器使用的.实际上,铁氧体较好的等效于电阻以及电感的并联,低频下电阻被电感短路,高频下电感阻抗变得相当高,以至于

MySQL技术内幕(SQL编程)-数据类型

一:MySQL存储引擎 MySQL插件式存储引擎可以让存储引擎层的开发人员设计他们希望的存储层(满足事务需求.满足数据放到内存中等),常见的存储引擎如下: InnoDB存储引擎:支持事务,面向联机事务处理的应用.特点是行锁设计.支持外键.默认读取操作不会产生锁.最为常用的引擎,5.5.8版本后的默认存储引擎. MyISAM:表锁设计.支持全文索引.不支持事务,面向OLAP数据库应用,5.5.8版本前曾是默认存储引擎.其缓冲池只缓存索引文件,不缓存数据文件. NDB:集群存储引擎,结构是share