网站首页 > 技术文章 正文
我们本该在任何地方,都学到我们应该学到的东西!
写这段文字,是因为前不久发生的一个留言:
我不知道什么样的群,算是有意思。但你要进了群,一言不发,那肯定是找不到有意思的事情。
再举个例子,我的历任老板都对我说过相同的话:
能不能帮我多培养几个像你一样精通数据库的年轻人?
第一次听到这番话时,我相当激动,热泪盈眶。开心之意溢于言表,当然是十分乐意。但几次之后,发现精通数据库的高手,并不是靠师傅培养就能出的来。
举个例子:下面这段不到 3 行的 SQL 代码,跑了 30 秒都没有出来结果,你怎么解决?
image
很多人第一反应是数据库压力大,慢了,结果死等,死等几次后,去百度。结果百度无果,就会问一问组里资深的人。但也有部分筒子,懒得百度,冲到高工那里就死皮赖脸让人家帮忙解决问题。之后不了了之。还有的同学(极个别)会请教高工,是哪里看到的技巧,然后去谷歌百度一下。
我不知道你会怎么做,但就我开号这么长时间来,真遇到问题,会在我号留言,说到点上的,10个人不到。更多,就是第一朋友的留言那样,“我没遇到过,我没从你群里学到技巧,你真没意思”
现实中,也没好到哪里去!碰到这个问题,还是直接找我要答案,并不想知道,答案从哪里来。
在这段不到 3 行的 SQL 中,至少能反应出一个人看过哪些书,是真正看进去,弄明白的那种看书。
基础部分
如果不知道 SQL Server 还有 INTERSECT 命令,那只能说明,基础的语法书,都没有完整的看过了。
比如:《Inside SQL Server T-SQL Querying》、《Inside SQL Server T-SQL Programming》
当看过上边两本书之后,应该懂得如何使用 Execution Plan 执行计划来分析,究竟哪些步骤出了问题,消除基本的性能障碍。
image
上面两本书,至少给了你线索,从这些带蓝框的算法里面找瓶颈。
进阶书籍
当我在语句后,加入一段命令,数据就秒出,我不知道这个时间节省了多少倍,超过 30 秒的 SQL 是根本不允许存在的。因此即使这段经我手优化的 SQL 执行了 1 秒,也比原先的 SQL 快了 30 倍。
image
你看,就 319 行数据,用了 30 秒都没出的来。
那很多朋友也许都要说:
哦,还有 OPTION(HASH JOIN)这回事啊,怎么玩的啊?
嗯,怎么玩,我好像没有义务告诉你啊。再说,我给出这么段 SQL ,难道怎么玩不是该你去补课的地方嘛?
所以,每每老板对我语重心长说,要多培养几个高手,我现在也只能苦笑。高手的培养,真不是一朝一夕,还得看资质。
在晋级书单中,一定会有数据库性能调优相关的书。我推荐《Inside SQL Server Performance Tunning》.当然凡是带有 SQL Performance Tuning的书,都不要放过,至少看看目录。我曾经买了不少于 5 本带有Performance Tuning 的书。有 Oracle, MySQL,也有 Spark SQL. 更细致一些,还会有单独对索引进行介绍的,比如《数据库索引设计与优化》。再说一遍,在知识面前,钱算个P!
看完这些书,你可以欺骗数据库优化引擎,想让它做什么,都行。酷不酷?
image
你看这里,Hash Match 算法,你懂了么?
--完--
猜你喜欢
- 2024-11-12 清华大学出版社「区块链技术」好书推荐②(10种)
- 2024-11-12 java必读书籍_最佳5本Java性能调优书籍–精选,必读
- 2024-11-12 Java程序员学习路线书籍推荐10本
- 2024-11-12 眼花缭乱的数据库,怎样选择?给你这个书单,想学哪个学哪个
- 2024-11-12 霸榜GitHub!左手Oracle,右手MySQL,让你在实战中立于不败之地
- 2024-11-12 MySQL书籍(21本) mysql书籍推荐
你 发表评论:
欢迎- 615℃几个Oracle空值处理函数 oracle处理null值的函数
- 608℃Oracle分析函数之Lag和Lead()使用
- 595℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 592℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 587℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 580℃【数据统计分析】详解Oracle分组函数之CUBE
- 569℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 560℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)