快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记APP:Schema的优化和索引选择最佳的数据类型前言



越小也便是越好的

一样平常来说,只管即便选择小的数据类型足以相符你的存储和展现数据。越小的数据类型也经常是越快的,由于它们应用了较少的硬盘空间,内存,CPU缓存。它们也必要更少的CPU处置惩罚周期。

要确定的是不要低估你要存储数值的范围,由于在你的Schema的多个位置中,增长的数据类型范围会让操作很辛勤费时。假如你对不知道选择什么样的数据类型,那么就选择一个最小的,当然要确保数据不会越界。

简单的便是好的

对付简单数据类型的操作,不必要太多的CPU周期。比如,整型之间的对照要比字符之间的对照耗损更低。由于字和记APP符集和排序规则使字符的对照过于的繁杂。这有两和记APP个例子,存储日期和光阴要应用MySQL内置类型而不是用字符串,以及对付IP地址你应该应用整型。我们会将在今后的章节具体评论争论。

假如可能,要避免应用NULL

当可能的时刻,你都应该定义字段为NOT NULL.有许多表包括了许多NULL的列,纵然这些利用并不存储NULL。只不过由于这是默认的。除非你盘算存储NULL,不然的话你就要小心指定列为NOT NULL.

对付MySQL,优化一些涉及到NULL列的语句是异常艰苦的,由于它们加索引,索引统计,以及值的对照都很繁杂。一个NULL列必要更多的存储空间以及在MySQL内部必要特殊处置惩罚。当一个NULL列被索引了,它的每个实体都必要额外的字节,以及设置导致了在MyISAM中,定长的索引转为可变大年夜小(variable-sized)的索和记APP引。

纵然你必要在字段中不存储值,你也不要用NULL.斟酌应用0,特殊的数值,或者空字符串来取代NULL.

把NULL列变为NOT NULL列机能的前进是很小的。是以不要改变已有的S和记APPchema,除非你能知道这样做会引起的问题。然而,假如你计划索引列,假如可能的话,请避免应用NULL列。

第一步要抉择指定列的适用类型,要大年夜概知道属于哪一类的:数值,字符串,光阴等等。这是对照直接的,然则我们提到有些特殊的环境下,选择数据类型并不是很直接的。

第二步选择详细的类型。许多MySQL数据类型保存相同的类型数据,然则它们存储的范围不合,容许的精度,或者它们必要的物理空间(或者硬盘和内存)。一些数据类型有特殊的行径或者属性。

举个例子,DATETIME和TIMESTAMP列能存储相同类型的数据:日期和光阴,精度为秒。然而,TIMESTAMP只应用了一半的存储空间,以及有个自动更新的特点。在另一方面,它的值范围较小,以及有的时刻这个特点成了一个障碍了。

我们评论争论的都是基础类型。MySQL也兼容又和记APP名,比如INTEGER,BOOL以及NUMERIC.这些仅仅是又名。它们可能造成一些利诱,然则不会影响机能。

您可能还会对下面的文章感兴趣: