MySQL日常书写优化点总结

MySQL日常查询优化点

正式学习第一节

1、sql语句尽可能简单——(一条sql只能在一个cpu运算,最好将大语句拆小语句);

2、不用select * (消耗cpu,io,内存,带宽,这种程序不具有扩展性);

3、OR 改写为 IN ; OR 改写为UNION;
select stid from t where class =“A” or class=“B” or name = “Anna”;
=>
select stid from t where class in (“A”,“B” )
union
select stid from t where name=“Anna”

4、避免使用%;count(*);

5、使用union all替代union(union有去重开销);

6、少用连接join;——反范式化,以空间来换取时间
(以前总会建立一些基础表,用于匹配,结果查询总是要left join 好多表,导致运行速度。。。)

7、建立索引;不在索引做列运算
ALTER TABLE table_name ADD INDEX index_name (column_list1,column_list2);

其它:建表优化
1、字符转化为数字(能转化的最好转化,同样节约空间、提高查询性能);
2、避免使用NULL字段(NULL字段很难查询优化、NULL字段的索引需要额外空间、NULL字段的复合索引无效);
3、少用text类型(尽量使用varchar代替text字段);
4、不用外键
5、合理使用索引,字符字段必须建前缀索引

字符转化为数字常用案例:
①日期时间 存储为 int类型;②ip地址 存储为 int类型

用到的转化函数:
1、unix_timestamp()函数是将日期格式的数据转换为int类型
2、FROM_UNIXTIME(timestr)函数是将int类型转换为时间格式
3、INET_ATON() 函数是将ip地址的数据类型转化为int类型
4、INET_NTOA()函数是将ip地址的数据类型转化为varchar类型

其它的其它:

高大尚的优化配置参数、配置文件。。。。。。
算了算了,我用不到用不到,不是我该学的。。。。。。
I am not a DBA,也发展不到那边去吧,需要再来需要再来。
其它日常查询优化方法,有推荐的吗?象征性地问一问,反正也不会有人注意到,哈哈哈哈,力扣刷起来吧
时间戳转换为日期时间
日期转化为时间戳
在这里插入图片描述
SQL执行顺序图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值