MySQL优化(二)

104 篇文章 0 订阅
17 篇文章 0 订阅

MySQL优化(二)

MySQL优化(一)

数据类型的优化

选择合适的数据类型,对数据库的sql优化至关重要,本身合适的数据类型可能只需要更少的空间和计算能力
如何选择合适的数据类型:
1、选择更小的数据类型(速度快、占用磁盘、内存、缓存小,确保存储值的范围)
2、选择更合适更简单的数据类型(更小的CPU消耗【事件类型使用date/time而不用string,IP地址使用整型存储】)
3、字段尽量避免为null(not null带来的性能提升比较小,但是可以机会在列上创建索引)

IP地址使用点分字节存储-》整型(4个字节)

相关数据类型:

整数型:
tinyint - 8位(byte -128~127)
smallint - 16位(short)
mediumint - 24位
int - 32位(-20多亿~20多亿)
bigint - 64位(long)
unsigned属性:将字段的类型设置为正数,当一个类型不允许为负数时,正数的上限大致会提高1倍,tinyint unsigned(0~255,占1个字节)特别适合存放年龄

注意:int(11)是指定整数类型的宽度,它不会限制值得合法范围,对于存储和计算而言,int(1)和int(20)没什么区别

浮点型:
float - 32位(float>long>int)
double - 64位
decimal - 精准小数
字符串类型:
varchar - 可变长字符串,往往只需要使用合适的存储空间来存储数据,但是需要额外的花费1~2个字节记录数据的实际长度
char - 定长字符串,mysql总是根据定义的字符串长度分配足够的空间。
blob - 大二进制类型
text - 大文本类型

注意:
1、char(1)比varchar(1)的性能要好,因为varchar需要额外的空间存储数据长度
2、varchar(20)比varchar(200)的计算性能要高
当字符串的最大长度比平均长度要大很多,并且列的更新很少时比较适合使用varchar

日期和时间类型:
datetime: - 占用8个字节,范围1001~9999年
timestamp: - 占用4个字节,范围1970~2038年,支持时区

索引优化

索引就像一本书的目录,可以帮助我们快速的找到相关的数据。(索引是一种用于快速搜索的数据结构)。

索引是存储引擎用于快速找到记录的一种数据结构。
索引对于良好的性能非常关键。
尤其当表中的数据量越来越大时,索引对性能的影响越发重要。
索引应该是对查询性能优化最有效的手段了。
索引能够轻易将查询性能提高几个数量级。
但是索引经常被忽略,不恰当的索引对性能可能还会带来负面效果

什么时候适合添加索引?

1、数据量巨大
2、字段选择性大的时候
3、非null的列
4、修改频率低的列

什么时候不适合添加索引?

1、数据量小
2、字段选择性小
3、可能存在大量的null值
4、修改频率高

索引的相关命令

单值索引:
create index 索引名称 on 表名(字段名)

多列索引(复合索引):
create index 索引名称 on 表名(字段名1, 字段名2.....)

唯一性索引:
create unique index 索引名称 on 表名(字段名)

全文索引:
create FULLTEXT inde 索引名称 ON 表名(字段名)

注意:
1、主键自带索引(性能最好的索引)
2、除了主键索引,其他所有创建的索引都叫做二级索引
3、对于数据库的任意列,可以反复创建索引
4、多列索引列的顺序是很重要的 index(name,age) 不等同于 index(name)+index(age) index(name,age) 不等同于index(age,name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值