mysql decimal 比较大小_掌握 MySQL 的索引查询优化技巧

本文的内容是总结一些MySQL的常见使用技巧,以供没有DBA的团队参考。如无特殊说明,存储引擎以InnoDB为准。

MySQL的特点

了解MySQL的特点有助于更好的使用MySQL,MySQL和其它常见数据库最大的不同在于存在存储引擎这个概念,存储引擎负责存储和读取数据。不同的存储引擎具有不同的特点,用户可以根据业务的特点选择适合的存储引擎,甚至是开发一个新的引擎。MySQL的逻辑架构大致如下:

095a683e38af02792df45cfb1a0436e3.png

MySQL默认的存储引擎是InnoDB,该存储引擎的主要特点是:

  • 支持事务处理
  • 支持行级锁
  • 数据存储在表空间中,表空间由一些列数据文件组成
  • 采用MVVC(多版本并发控制)机制实现高并发
  • 表基于主键的聚簇索引建立
  • 支持热备份

其它常见存储引擎特点概述:

  • MyISAM:老版本MySQL的默认引擎,不支持事务和行级锁,开发者可以手动控制表锁;支持全文索引;崩溃后无法安全恢复;支持压缩表,压缩表数据不可修改,但占用空间较少,可以提高查询性能
  • Archive:只支持Insert和Select,批量插入很快,通过全表扫描查询数据
  • SCV:把一个SCV文件当做一个表处理
  • Memory:数据存储在内存中

还有很多,不再一一列举。

数据类型优化

选择数据类型的原则:

  • 选择占用空间小的数据类型
  • 选择简单的类型
  • 避免不必要的可空列

占用空间小的类型更节省硬件资源,如磁盘、内存和CPU。尽量使用简单的类型,如能用int就不用char,因为后者的排序涉及到字符集的选择,比使用int复杂。可空列使用更多的存储空间,如果在可空列上创建索引,MySQL需要额外的字节做记录。创建表时,默认都是可空,容易被开发者忽视,最好是手动改为不可空,如果要存储的数据确实不会有空值的话。

整型类型

整型类型包括

  • tinyint
  • smallint
  • mediumint
  • int
  • bigint

它们分别使用8、16、24、32和64位存储数字,它们可以表示

98b019312a570d118f603b03044a3603.png

范围的数字,前面可以加unsigned修饰,这样可以让正数的可表示范围提高1倍,但是无法表示负数。另外,为整型指定长度没什么卵用,数据类型定下来,长度也就相应定下来了。

小数类型

  • float
  • double
  • decimal

floatdouble就是通常意义上的floatdouble,前者使用32位存储数据,后者使用64位存储数据,和整型一样,为它们指定长度没什么卵用。

decimal类型比较复杂,支持精确计算,占用的空间也大,decimal使用每4个字节表示9个数字,如decimal(18,9)表示数字长度是18,其中小数位9个数字,整数部分9个数字,加上小数点本身,共占用9个字节。考虑到decimal占用空间较多,以及精度计算很复杂,数据量大的时候可以考虑用bigint代替之,可以在持久化和读取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值