MySQL优化——从建表开始优化

本文介绍了SQL数据库设计和查询优化的关键实践,包括合理的表结构设计、有效的SQL查询方式等,旨在提高数据库性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、建表

1、不要使用使用NULL字段,设置字段默认值
bad case:
name char(32) default null
age int not null
good case:
name char(32) not null default ”
age int not null default 0

2、用好数值类型
tinyint(1Byte)
smallint(2Byte)
mediumint(3Byte)
int(4Byte)
bigint(8Byte)
bad case:
int(1)/int(11)
3、优先使用enum或set
例如:sex enum (‘F’, ‘M’)
4、少用text/blob
varchar的性能会比text高很多;
实在避免不了blob,请拆表;
5、控制列数量
字段少而精,字段数建议在20以内;
6、拒绝3B
拒绝大sql语句:big sql
拒绝大事物:big transaction
拒绝大批量:big batch

二、查询

1、不用select *
消耗cpu,io,内存,带宽;
这种程序不具有扩展性;
2、sql语句尽可能简单
一条sql只能在一个cpu运算;
大语句拆小语句,减少锁时间;
一条大sql可以堵死整个库;
3、简单的事务
事务时间尽可能短;
bad case:
上传图片事务
4、limit高效分页
limit越大,效率越低
select id from t limit 10000, 10;(返回10001-10010行)
=>
select id from t where id > 10000 limit 10;
5、使用group by
分组;
自动排序;
6、不在索引做列运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值