一句SQL语句,可能就是一个定时炸弹

      一句小小的SQL语句,在数据量很小的时候,可能是一句相当完美的语句。但是随着数据量的不断增加,你是否能想到他带来的灾难性的后果呢?那么,什么样的SQL语句才算好的语句呢?

 

       对于SQL语句,很多人上来就是select *,不用想,对于数据量大的表来说,这样的语句无非是致命的。而一个好的数据库管理员,在设计数据库时,就应该想到当数据量很大很大时,就应当有所准备。

 

       最近在做一个查询统计, 因为一直用本机的数据库,数据量不是很大,即使查询时等1s也没什么感觉,但是当连接到真正的数据库上,那等待的感觉,只能用一个词来形容。煎熬。没办法,这样的系统哪个用户敢用啊。卡都卡爆了。最后把那条SQL语句放到真实的数据库中执行。灾难来临,直接卡死。数据库瘫痪。数据是1秒一添加的。可想而知数据量有多大了。只能优化SQL语句了,光优化SQL语句还是不行的。还得想想其他办法。

 

      所以,SQL语句慎用,数据库的优化很重要,是每一个“优秀”程序员必须要会的。

 

      这个问题到底如何解决的呢?其实解决办法很多,看你对数据库的了解程度了。我是了解的不深刻,只能跟着大牛学习学习了。

 

       因为我们的数据是实时监测数据,数据更新很快,但是就是为了防止第一次启动时没有数据,所以进行了初始化,执行了这条SQL语句。导致我们重启以后,可以说是再也启不来了。它害死了整个系统。所以我们干脆就不执行这条SQL语句了,初始化时直接给他个初值。直接毙掉。实时数据会存入字典里,所以我们只需要在字典里查询我们需要的数据。

       这个办法当然是无可奈何的。数据库的优化蕴含着很深的学问。在工作中、学习中要多多积累经验,敢于尝试,敢于去优化。对于数据库,是从20136月开始接触的,但是一直停留在基础层次,从未有所长进。我是这么觉得的,但是回过头来看看自己的博客,不管是存储过程还是视图、触发器自己都用过,也都会用。我停留在哪了么?我差在哪里了。说对了。我不会优化。大数据优化,对于我来说是个高大上的词,我畏惧他。

 

      项目马上快验收了,效率这么低,经理请来一个10年专供数据库的人来解决效率问题,他通过表分区进行优化。重构了数据库。其实这些在开发的时候就应该想到的,等项目快上线了再动数据库确实有点不妥了。

 

     下班以后,我也百度一下,多学习一下数据库的优化,这个要学好了,我也要学着让自己成为大牛,哈哈。

 

      对于数据库的优化,有很多我们需要学习的,也有很多注意的。这得在项目实践中多多积累。我所了解的一丢丢,万事都从一丢丢开始,不可能一下子一口吃个胖子。

 

     所以,对于数据库的使用,我们要考虑很多,尤其是性能。我们要多接触这方面的知识。比如:你是否知道select *的坏处,*无非是查询所有列了。这是多么耗费时间你是知道的。对于你写的每一句SQL语句都要深思熟虑看,考虑一下后果。我们还可以减少访问数据库的次数,能不直接从库里取数据就不拿。还可以使用索引,提高检索数据的效率,但是索引需呀存储空间,并且要定期维护,索引要加的适量并且准确。否则不必要的索引同样影响效率。我们还要避免在索引上使用计算。

 

     数据库的优化,是我们每个人需要会的。我了解的太少了,得在工作中多多积累经验,让以后的项目中,从一开始,就把性能问题考虑进去,多一份思考。性能问题应该受到重视。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值