标签:mysql5.0 ble 数值 this 规则 好的 absolute 精确 数字
下面是一些简单的原则:
更小的通常更好
一般情况下,应该尽量使用可以正确存储的最小数据类型。如:只需要存储0-200, tinyint unsigned就比较好。小的数据类型占的磁盘、内存和CPU缓存都较少,并且处理时需要的CPU周期数也更少。
简单就好
简单数据类型额操作通常需要更少的CPU周期。如:应该使用MySQL的內建类型来存储时间和日期而不是字符串。如:应该用整型存储IP地址。
尽量避免null
选择数据类型时,第一步需要确定合适的大类型:数字、字符串、时间等。下一步是选择具体的类型。很多MySQL的数据类型可以存储相同类型的数据,只是存储的长度和范围不一样、允许的精确度不一样、或者需要的物理空间不同。如:datetime和timestamp可以存储相同类型的数据:日期和时间、精确到秒。然而timestamp只使用datetime一半的存储空间,并且会根据时区进行变化,具有特殊的自动更新能力。但是timestamp允许的时间范围要小的多。,有时候它的特殊能力会成为障碍。
实数是带有小数部分的数字。MySQL支持精确类型,也支持不精确类型。
VARCHAR
CHAR
填充和截取空格的行为
使用下面的命令进行验证:
CREATE TABLE `char_test` (
`char_col` char(10) NOT NULL DEFAULT ‘‘,
`varchar_col` varchar(10) NOT NULL DEFAULT ‘‘
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into char_test (char_col, varchar_col) values (‘string1‘, ‘string1‘),(‘ string2‘, ‘ string2‘),(‘string3 ‘, ‘string3 ‘)
select concat("‘",char_col,"‘"), concat("‘",varchar_col,"‘") from char_test
select * from char_test where char_col = "string3 " and varchar_col = "string3"
注意空格的填充和截取。
二进制比较的优势:
大小写敏感。
select binary ‘ABCD‘=‘abcd‘ COM1, ‘ABCD‘=‘abcd‘ COM2;
+--------+-----------+
| COM1 | COM2 |
+--------+-----------+
| 0 | 1 |
+---------+-----------+
1 row in set (0.00 sec)
select * from usertest where username = binary ‘ab‘
根据字节的数值进行比较,因此二进制比较比字符比较简单很多,所以更快。
BLOB和TEXT类型
使用枚举代替字符串类型
YYYYMMDDHHMMSS
的整数中,与时区无关,保存在8字节中。TIMESTAMP
所有的位数据,不论底层存储格式和处理方式如何,在技术上讲都是字符串类型。
BIT
MySQL将bit当做字符串处理,而不是数字。当检索bit(1)时,结果是包含二进制0和1的字符串,而不是ascii码的“0”和“1”。
SET
可以保存很多true和false的值。SET在MySQL内部是一系列打包的位的集合来表示的。
为标识列选择类型是非常重要的。
整数类型
整数通常是标识列的最好的选择。因为它们很快并且能使用AUTO_INCREMENT。
枚举类型和SET类型
不建议使用这两种当做标识列。
字符串类型
如果可能,应该避免使用字符串作为标识列,因为它们很消耗空间,并且通常比整数类型慢。
原因:
某些数据类型并不直接和内置数据类型一致。
.表示
之间转换。参考资料:
高性能MySQL(第3版)
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/53454823
作者:WSYW126
标签:mysql5.0 ble 数值 this 规则 好的 absolute 精确 数字
原文地址:http://blog.csdn.net/wsyw126/article/details/53454823