十年DBA老兵:警惕,重Java轻SQL乃性能大忌(5)
二、心得 心有余悸,学无止境 值得一提的是,这个 SQL 并非一蹴而就的,从第一次改写,到最终上线,经历了好几个版本,但整体结构并没有变动,只是对某些特殊场景做了调整。 我来项目的第一个 SQL 优化就这样跌跌撞撞、歪打正着的完成了。由于时间紧迫,整个过程都是绷紧了神经。 现在回想起来,既是庆幸又是后怕,庆幸的是问题得到了及时解决;后怕的是,当时可谓是不知者无畏,完全是在不熟悉环境,不熟悉利害关系的情况下解决了问题。如果放在几个月后,我想一定没有当时的勇气和决心来完成这件事情。 回过头来看,这起由 wm_concat 引发的性能事件还是给了我们很多的启发:
SQL 优化并不是孤立的,也就是说并不是所有的 SQL 本身都存在优化的空间。当 SQL 本身无法优化的时候,或者优化的空间不足以满足用户需求时,就需要从全局需求突破。 尝试着按另一种方式得到结果:殊途同归讲的不就是这个道理吗?正所谓山重水复疑无路,柳暗花明又一村,关键在于你是否愿意主动寻求和突破。
SQL 优化并不需要多么高深的知识和高级的技术,SQL 优化也并不那么神秘,一点点技术,一点点经验,再加上一点点运气就足够了。
这里说的技术是 SQL 技术。SQL 语言我认为是除汇编外所有语言中最神奇、最简单、最具艺术化的语言。 说简单,就 select 查询而言,就 select from where and or group order 等屈指可数的几个关键字,拿 SQL 而言也就 select、update、delete、insert 四种功能。而且通俗易懂。 说神奇,因为就这些关键字,无需排列组合,便可以千变万化。在当今的信息化大时代,无外乎就是增删改查;大千世界,芸芸众生,概莫能外。 就拿人类自身来说,其终极哲学就是:生老病死,出生就是 insert,岁月催人老就是 update,众里寻他千百度就是 select,荣登极乐就是 delete。 说艺术化,简单而不简约,这就是艺术,能以数个关键字撑起世间万物的起起落落,这就是艺术。 这里说的掌握 SQL 技术,不仅仅是掌握这几个关键字,用这几个关键字变幻出种种结果,更是要掌握如何通过这几个关键字来实现这种艺术化的效果。
经验这东西是美妙的,一旦你拥有了某个知识点的经验,下次再遇到时,你会不费吹灰之力就能解决了。 (编辑:ASP站长网) |