暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

117-AI已具备中级SQL优化水平,已经远超平均水平

这是我2019年遇到一个案例, 开发人员看似做了优化, 实际上适得其反.模拟如下:

原SQL写法与执行情况, exists里面有rownum=1,执行时间49秒多:

把rownum=1放到exists里面, 想法可能是好的, 实际上效率很差. 把rownum=1去掉后, 逻辑是相同的, 执行时间只需要0.07秒:

我把这个问题丢给grok,让它给出优化建议. 第一次没有选择"Deepsearch"和"思考", 得到的答案不太令人满意:
  方案1没问题, 如果没有索引, 上面的demo SQL估计要执行几个小时,但这不是问题核心;

 方案2没有考虑等价性, 二者逻辑上是不等价的, 初级小白可能看不出来;

   方案3跟原写法没啥大区别,rownum改成fetch语法, 效率还要更差一些(因为fetch 语法使用分析函数).

再看看开启"Deepsearch"和"思考"后的全火力输出(只截取了关键部分):
AI强大的检索能力,比传统的搜索引擎好用不知多少倍, 一下就发现了问题;

索引的建议也是没问题的;

 改成in没问题, 改成inner join也是没问题的, 虽然这些都不是问题核心,至少提供了其他选择, 而且等价性也是考虑到的.

AI还贴心的给出了各种优化方案的对比. 其实exists和in在这里效率是一样的, 不知道AI是不是被网上的一些文章给污染了.

总结:
    个人认为, AI 在数据库SQL优化领域, 已经超越了大部分开发人员和DBA. 这是一个很好的辅助工具, 使用它也要有一定的理论基础和判断能力.




文章转载自老虎刘谈oracle性能优化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论