MySql数据类型优化,查询优化

MySql数据类型优化,查询优化

选择正确的数据类型对于高性能至关重要。

选择优化的数据类型

  1. 选择可以正确存储数据的最小数据类型(更小的数据类型通常处理更快,占用更小的磁盘,内存容量,如果需要网络传输的时候,也占用更小的带宽。)
  2. 选择简单的数据类型(简单类型需要更少的cpu处理时间)
  3. 避免设置null列(null是列的默认属性,设置可为null的列会占用更多的空间,而且使得索引和值比较更复杂。)
  4. 考虑使用 ENUM (枚举)列 如果有一个只含有限数目的特定值的列,那么应该考虑将其转换为 ENUM 列。ENUM 列的值可以更快地处理,因为它们在内部是以数值表示的。

常用数据类型介绍

  1. 整数类型:5种类型,tinyint 1字节,smallint 2字节,mediumint 3字节,int 4字节,bigint 8字节,存储范围为:-2(n-1)至2(n-1)-1,n为数据类型位数。当存储的整数不包含负数的时候(无符号整数),可以使用unsinged属性,这样可以使得正数的上限提高一倍
  2. 实数类型:float 4字节,double 8字节,它们都是使用标准的浮点运算进行近似计算。
  3. 时间和日期类型:datetime和timestamp,datetime能保存从1001年至9999年,精度为秒。timestamp保存了从1970-1-1 00:00:00开始至今的秒数,它和unix时间戳相同。
  4. 字符串类型:主要是varchar和char两种类型,还有text等,不同的存储引擎对它们在磁盘和内存的存储实现不同,下面主要介绍InnoDB和MyISAM。

varchar与char的选择

如果是innodb的话建议使用varchar数据类型,因为对于innodb来讲内部的存储格式不区分可变长度和不变长度,这样char没有性能优势,而varchar更能节省存储空间,因此更推荐使用varchar数据类型

如果是myisam的话,根据要求查询速度和数据存储空间的具体情况进行选择,像上面说的如果需要速度,数据长度变化不大就选char,如果数据长度变化大,且想要节约存储空间则最好使用varchar。

select查询优化

  1. 在查询后面加上LIMIT,指定获取条数
  2. 避免返回全部字段,获取什么字段,取什么字段
  3. 尽可能使用关联查询代替子查询。
  4. 使用联合(UNION)来代替手动创建的临时表
  5. 。。。。
猜你喜欢