<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("数据库,语句") PageTitle=stripHTML("一句SQL语句,可能就是一个定时炸弹") ArticleIntro=stripHTML("一句SQL语句,可能就是一个定时炸弹,一句小小的SQL语句,在数据量很小的时候,可能是一句相当完美的语句。但是随着数据量的不断增加,你是否能想到他带来的灾难性的后果呢?那么,什么样的SQL语句才算好的") Articlecontent=stripHTML("   一句小小的SQL语句,在数据量很小的时候,可能是一句相当完美的语句。但是随着数据量的不断增加,你是否能想到他带来的灾难性的后果呢?那么,什么样的SQL语句…") ModuleName = stripHTML("classical") InfoID = stripHTML("210236") ChannelShortName=stripHTML("文章") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("classical") %> 一句SQL语句,可能就是一个定时炸弹 - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> 知识库 >> 数据库 >> Mssql >> 基础教程 >> 正文

[图文]一句SQL语句,可能就是一个定时炸弹

2015/9/1 作者:不祥 来源: 互联网
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

 

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

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

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

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

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

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

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

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

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

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

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

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

  



  • 上一篇文章:

  • 下一篇文章: 没有了