MySQL的SQL优化(10条重点)

本文探讨了如何避免在SQL查询中滥用索引,如避免在WHERE子句中的表达式和函数操作,提倡使用更高效的方式如equals代替算术运算,以及利用exists替代in。还强调了合理使用索引、数据类型、字符串存储和事务管理的重要性,提醒避免全表扫描和大数据返回。
摘要由CSDN通过智能技术生成

1、尽量避免在where字句中对对字段进行表达式操作,这将导致搜索引擎放弃使用索引进行全盘扫描
例如

select id from t where num/2=100 

应改为

select id from t where num=100*2 

2、应尽量避免在where字句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全盘扫描
例如

select id from t where substring(name,1,3)='abc'

应改为

select id from t where name like 'abc%' 

3、不要在where字句的“=”左面进行函数,算数或者其他表达式运算,否则系统将可能无法正确使用索引

4、很多时候用exists代替in是一个很好的选择
例如

select num from a where num in(select num from b) 

应改为

select num from a where exists(select 1 from b where num=a.num) 

5、索引不是越多越好

6、尽量使用数字型字段

7、尽可能使用varchar可变长字符串代替char定长字符串,因为可变长字符串存储空间小,可以节省很多存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然效率要高一些

8、尽量避免大事务操作,提高系统并发力

9、任何地方都不要使用select * from table ,用具体的字段列表代替 *,不要返回任何用不到的字段

10、尽量避免向客户端返回大数据量,若数据流过大,应该考虑相应的需求是否合理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值