SQL语句该如何优化?

1,查询语句里,用字段名代替*

select id,name,age from user

2,过滤条件尽量不要用or,难以避免

3,表设计时,字段的类型,最好用varchar代替char

--char是固定长度,可能浪费空间,varchar长度可变

4,模糊查询,最好先确定前面的数据

select id,name,age from user where name like 't%'

5,字段的值,尽量用数字不用字符串

--查的快,省空间,1个数字只占一个字符,但是一个汉字要占3个字符(utf8)        

6,查询的结果范围尽量小,数据量尽量少

select id,name,age from user where name='123' and id=3

7,给字段加索引

8,每个列都可以加索引,但是不能太多,最好不能超过5

9,对字段的值可以去重,使用distinct关键字,但是不要对太多列去重

select distinct * from user

10,过滤条件里最好不要用!=  <> 

11,尽量给null列设置默认值

12,批量操作

--需要一次性删除多条(10000)时,最好分批删除(按照500个的方式删除多次)

--增加大量数据时,可以只发起一个insert语句,来减少事务的开启和结束

13,group by

--尽量把数据的范围控制到最小然后再分组                

select id,count(*) from user group by id having id > 100 #低效

select id,count(*) from user where id > 100 group by id   #高效

14,伪删除设计

真实的开发中,很少真正的删除数据,而是把要删除的数据改变状态1 -> 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值