几个写SQL的好习惯(持续更新中)

程序员离不开与数据库打交道,而能写一手好的SQL也能直接反应一个程序员是否合格,下面介绍几个养成写好SQL的习惯

1.写完SQL先explain查看执行计划

这一点非常重要,因为在生产环境中,往往数据量会比较大,当你写完一个sql并没有去explain它的时候,你不能完全确定它是否命中了你的索引?它的查询效率会不会很低?会不会成为一个慢sql?只有当你去explain这条语句的时候,你才会知道它的执行情况

用法:在你的sql前添加explain

例子:

 explain select * from student where name="张三"

explain的结果若有不懂的,可以到分析SQL语句性能必备知识(explain命令详解)_李文良的博客-CSDN博客这篇博文下了解

2.设计表时尽量把所有列定义为NOT NULL

1.NOT NULL 列更节省空间:NULL列需要一个额外字节作为判断是否为NULL的标志位

2.NULL列需要注意空指针问题:查询出的数据列若为NULL,计算比较时需要注意空指针

3.减少不必要的字段返回

往往一般的需要都不太需要用到全部的字段,所有在了清楚需求后,将所需要的字段返回,避免select *

1.可以节省资源,减少网络开销

2.可能用电脑覆盖索引,减少回表,提高查询效率

4.尽量用varchar代替char(特定情况)

区别:

1.char表示定长,长度固定,varchar表示边长,即长度可变,char类型如果插入的长度小于定于长度时,则用空格填充,varchar小于定义长度时,则按实际长度存储,插入多长存储多长

2.存储的容量不同:对char来说,最多能存放的字符个数255,和编码无关。而varchar最多能存放65532个字符

性能:

因为char长度固定,char的存取速度还是要比varchar要快,方便程序的存储与查找;但是char也为此付出的空间的代价,因为长度固定,所有回占据多余的空间,是一种空间换取时间的做法,varchar则刚好相反,以时间换空间

总结:

char查询速度稍快,但浪费一定的空间,varchar则相对节省空间,查询效率稍低

5.如果修改/更新数据过多,考虑循环批次进行

例子:

反例:
delete from student where age > 18 limit 100000


正例:
for each(100)
{
  delete from student where age > 18 limit 1000
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值