点击蓝色“有关SQL”关注我哟
加个“星标”,天天与8000人一起快乐成长
我们本该在任何地方,都学到我们应该学到的东西!
写这段文字,是因为前不久发生的一个留言:
![image](https://i-blog.csdnimg.cn/blog_migrate/a9a8be77e396c33e86942faba07a998f.png)
我不知道什么样的群,算是有意思。但你要进了群,一言不发,那肯定是找不到有意思的事情。
再举个例子,我的历任老板都对我说过相同的话:
能不能帮我多培养几个像你一样精通数据库的年轻人?
第一次听到这番话时,我相当激动,热泪盈眶。开心之意溢于言表,当然是十分乐意。但几次之后,发现精通数据库的高手,并不是靠师傅培养就能出的来。
举个例子:下面这段不到 3 行的 SQL 代码,跑了 30 秒都没有出来结果,你怎么解决?
![image](https://i-blog.csdnimg.cn/blog_migrate/a4816fbba6416fc4f230c01281a0fa78.png)
很多人第一反应是数据库压力大,慢了,结果死等,死等几次后,去百度。结果百度无果,就会问一问组里资深的人。但也有部分筒子,懒得百度,冲到高工那里就死皮赖脸让人家帮忙解决问题。之后不了了之。还有的同学(极个别)会请教高工,是哪里看到的技巧,然后去谷歌百度一下。
我不知道你会怎么做,但就我开号这么长时间来,真遇到问题,会在我号留言,说到点上的,10个人不到。更多,就是第一朋友的留言那样,“我没遇到过,我没从你群里学到技巧,你真没意思”
现实中,也没好到哪里去!碰到这个问题,还是直接找我要答案,并不想知道,答案从哪里来。
在这段不到 3 行的 SQL 中,至少能反应出一个人看过哪些书,是真正看进去,弄明白的那种看书。
基础部分
如果不知道 SQL Server 还有 INTERSECT 命令,那只能说明,基础的语法书,都没有完整的看过了。
比如:《Inside SQL Server T-SQL Querying》、《Inside SQL Server T-SQL Programming》
当看过上边两本书之后,应该懂得如何使用 Execution Plan 执行计划来分析,究竟哪些步骤出了问题,消除基本的性能障碍。
![image](https://i-blog.csdnimg.cn/blog_migrate/02221c5bc8cc5aafb93a49a6cbc11706.png)
上面两本书,至少给了你线索,从这些带蓝框的算法里面找瓶颈。
进阶书籍
当我在语句后,加入一段命令,数据就秒出,我不知道这个时间节省了多少倍,超过 30 秒的 SQL 是根本不允许存在的。因此即使这段经我手优化的 SQL 执行了 1 秒,也比原先的 SQL 快了 30 倍。
![image](https://i-blog.csdnimg.cn/blog_migrate/129a6c5cce316ac76ad4722ba733076a.png)
你看,就 319 行数据,用了 30 秒都没出的来。
那很多朋友也许都要说:
哦,还有 OPTION(HASH JOIN)这回事啊,怎么玩的啊?
嗯,怎么玩,我好像没有义务告诉你啊。再说,我给出这么段 SQL ,难道怎么玩不是该你去补课的地方嘛?
所以,每每老板对我语重心长说,要多培养几个高手,我现在也只能苦笑。高手的培养,真不是一朝一夕,还得看资质。
在晋级书单中,一定会有数据库性能调优相关的书。我推荐《Inside SQL Server Performance Tunning》.当然凡是带有 SQL Performance Tuning的书,都不要放过,至少看看目录。我曾经买了不少于 5 本带有Performance Tuning 的书。有 Oracle, MySQL,也有 Spark SQL. 更细致一些,还会有单独对索引进行介绍的,比如《数据库索引设计与优化》。再说一遍,在知识面前,钱算个P!
看完这些书,你可以欺骗数据库优化引擎,想让它做什么,都行。酷不酷?
![image](https://i-blog.csdnimg.cn/blog_migrate/189afce83ebeacc5413303c031e3d5de.png)
你看这里,Hash Match 算法,你懂了么?
--完--
往期精彩: