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

一、选择标识符

一旦选定了一种类型,要确保在所有关联中都使用同样的类型,类型之间需要精确匹配,包括像UNSIGNED这样的属性。

问题:在比较操作时隐式的类型转换也可能导致很难发现的错误。

(1)整数:通常是标识列最好的选择,因为它他们很快并且可能使用AUTO_INCREMENT.

(2)ENUM和SET类型:通常是是不能用的。

(3)字符串类型:如果可能,应该避免使用字符串类型作为标识列,因为它们很消耗空间,并且通常比数字类型慢。

对于完全“随机”的字符串也需要多加注意,例如MD5(),SHA1()或者UUID()产生的字符串。这些函数生成的新值会做生意分布在很大的空间内,这会导致INSERT以及一些SELECT语句变得很慢。

如果存储UUID值,则应该移除“-”符号;或者更好的做法是,用UNHEX()函数转换UUID()值为16字节的数字,并且存储在一个BINARY(16)列中,检索时可以通过HEX()函数来格式化十六进制格式。

二、特殊数据类型

IPv4地址。人们常用VARCHAR(15)列来存储IP地址。然而,它们实际上是32们无符号整数,不是字符串。用小数点将地址分成四段的表示方法只是让人们阅读容易 。所以应该用无符号整数 存储IP地址。MySQL提供INET_ATON()和INET_NTOA()函数在这两种表示方法之间转换。

例:select inet_aton(‘192.168.222.255‘);  输出:3232292607

select inet_ntoa(3232292607);        输出:192.168.222.255

时间: 2024-10-26 15:28:03

mysql 数据类型优化(四) ---选择标识符,特殊类型数据的相关文章

Mysql性能优化(四)--MySQL优化

Mysql 优化 一.使用索引进行优化 在mysql中,创建数据表后会生成数据文件,索引文件,后缀名为.MYI的文件就是索引文件.索引的原理就是通过空间换取时间,所以索引并不是建立的越多越好. 我们可以通过explain的结果来分析该查询语句是否使用了索引.通过查看type,extra和rows的结果是可以看出来的. type的结果为all表示肯定没有使用索引: extra的结果中如果是using index则表示使用了索引,如果extra的结果为空则表示没有使用索引. rows的结果如果等于全

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 数据类型的简单选择

选择合适的数据类型:char和varchar: +---------+------------+ | char(6) | varchar(6) | +---------+------------+ | | | | str | str | | str123 | str123 | | str123 | str123 | +---------+------------+ 4 rows in set (0.00 sec) char(6)的存储需求总是6个字节.varchar(6)存储''需要个1字节.v

mysql 数据类型优化

更小的通常更好 简单就好 尽量避免null 一.整数类型 有两种类型的数字 :整数和实数.如果存储整数,可以使用这几种整数类型:TINYINT,SMALLINT,DEDIUMINT,INT,BIGINT.分别使用8,16,24,32,64位存储空间. 使用UNSIGNED属性,表示不允许复制,这大致可以例正数的上限提高一倍. 二.实数类型 实数是带有小数部分的数字.然而,它们 不只是为了存储小数部分:也可以使用DECIMAL存储比BIGINT还大的整数.MySQL既支持精确类型,也支持不精确类型

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笔记01 Schema与数据类型优化

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

第二章 Mysql数据类型简介

第二章 Mysql数据类型简介 ·     第一节:整数类型.浮点数类型和定点数类型 整型: ·TinyInt   (1字节) ·SmallInt   (2字节) ·MediumInt  (3字节) ·Int和Integer(4字节) ·BigInt    (8字节) 浮点数和定点数: ·Float   (4字节) ·Double  (8字节) ·Decimal(M,D) <定点数>(M表示总长度<包含小数点>,D表示小数位数) ·      第二节:日期与时间类型 ·Year  

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

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

【MySQL】《高性能MySQL》学习笔记,第四章,Schema与数据类型优化

[MySQL]<高性能MySQL>学习笔记,第四章,Schema与数据类型优化 良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema. 反范式的设计可以加快某些类型的查询,单同时可能使另一类型的查询变慢,比如添加计数表和汇总表是一种很好的优化查询的方式,但这些表的维护成本可能会很高. 1.选择优化的数据类型 更小的通常更好. ? 应该尽量使用可以正确存储数据的最小类型,更小的数据类型通常更快,因为他们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周