发布网友 发布时间:2022-04-08 08:52
共5个回答
懂视网 时间:2022-04-08 13:13
SQL语句,在数据量很小的时候,可能是一句相当完美的语句。但是随着数据量的不断增加,你是否能想到他带来的灾难性的后果呢?那么,什么样的SQL语句才算好的语句呢?
对于SQL语句,很多人上来就是select *,不用想,对于数据量大的表来说,这样的语句无非是致命的。而一个好的数据库管理员,在设计数据库时,就应该想到当数据量很大很大时,就应当有所准备。
最近在做一个查询统计, 因为一直用本机的数据库,数据量不是很大,即使查询时等1s也没什么感觉,但是当连接到真正的数据库上,那等待的感觉,只能用一个词来形容。煎熬。没办法,这样的系统哪个用户敢用啊。卡都卡爆了。最后把那条SQL语句放到真实的数据库中执行。灾难来临,直接卡死。数据库瘫痪。数据是1秒一添加的。可想而知数据量有多大了。只能优化SQL语句了,光优化SQL语句还是不行的。还得想想其他办法。
所以,SQL语句慎用,数据库的优化很重要,是每一个“优秀”程序员必须要会的。
这个问题到底如何解决的呢?其实解决办法很多,看你对数据库的了解程度了。我是了解的不深刻,只能跟着大牛学习学习了。
因为我们的数据是实时监测数据,数据更新很快,但是就是为了防止第一次启动时没有数据,所以进行了初始化,执行了这条SQL语句。导致我们重启以后,可以说是再也启不来了。它害死了整个系统。所以我们干脆就不执行这条SQL语句了,初始化时直接给他个初值。直接毙掉。实时数据会存入字典里,所以我们只需要在字典里查询我们需要的数据。
这个办法当然是无可奈何的。数据库的优化蕴含着很深的学问。在工作中、学习中要多多积累经验,敢于尝试,敢于去优化。对于数据库,是从2013年6月开始接触的,但是一直停留在基础层次,从未有所长进。我是这么觉得的,但是回过头来看看自己的博客,不管是存储过程还是视图、触发器自己都用过,也都会用。我停留在哪了么?我差在哪里了。说对了。我不会优化。大数据优化,对于我来说是个高大上的词,我畏惧他。
项目马上快验收了,效率这么低,经理请来一个10年专供数据库的人来解决效率问题,他通过表分区进行优化。重构了数据库。其实这些在开发的时候就应该想到的,等项目快上线了再动数据库确实有点不妥了。
下班以后,我也百度一下,多学习一下数据库的优化,这个要学好了,我也要学着让自己成为大牛,哈哈。
对于数据库的优化,有很多我们需要学习的,也有很多注意的。这得在项目实践中多多积累。我所了解的一丢丢,万事都从一丢丢开始,不可能一下子一口吃个胖子。
所以,对于数据库的使用,我们要考虑很多,尤其是性能。我们要多接触这方面的知识。比如:你是否知道select *的坏处,*无非是查询所有列了。这是多么耗费时间你是知道的。对于你写的每一句SQL语句都要深思熟虑看,考虑一下后果。我们还可以减少访问数据库的次数,能不直接从库里取数据就不拿。还可以使用索引,提高检索数据的效率,但是索引需呀存储空间,并且要定期维护,索引要加的适量并且准确。否则不必要的索引同样影响效率。我们还要避免在索引上使用计算。
数据库的优化,是我们每个人需要会的。我了解的太少了,得在工作中多多积累经验,让以后的项目中,从一开始,就把性能问题考虑进去,多一份思考。性能问题应该受到重视。
版权声明:本文为博主原创文章,未经博主允许不得转载。
一句SQL语句,可能就是一个定时炸弹
标签:oracle
热心网友 时间:2022-04-08 10:21
给你说下思路,你先找出来所有分数小于80分的姓名,然后根据这些姓名来找出来你要的结果,sql语句大致如下我没调试你按照这个思路试一下就可以了追答a是别名呀,就是a中的A。你自己要去多调试下就知道了,只看没有效果的,这个过程你会学到很多东西的
热心网友 时间:2022-04-08 11:39
having子句用于对分组后的数据进行过滤。。。热心网友 时间:2022-04-08 13:14
select a from students追答我看错了 我 以为 你要的 是 C>80的 人的姓名
第一楼的 是 正确的
热心网友 时间:2022-04-08 15:05
SELECT A FROM Students GROUP BY A HAVING MIN(C)>=80