• 欢迎访问周知博客,每周记录新知识
  • 祝各位学得开心!!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

记一次sql优化,chatGPT已超神

其他技术 admin 1年前 (2023-02-22) 620次浏览 0个评论

某天,有条语句通过正常思维去思考理论上是没问题的,但内部机制导致基本是全表查询:

SELECT id,source,source_id,type,op_name,op_by
FROM operation_logs
WHERE id in (
SELECT MAX(id) as id from operation_logs
WHERE source=’app_materials’
AND source_id in (103525)
AND type=2
GROUP by source_id
)

性能分析:

 

 

 

 

一群程序员一起研究如何优化这条sql语句,研究了好一会儿,试了几种方案都失败了,直到某个程序员将该语句扔到chatGPT:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

测试了一下,效果极好:

 

 

 

问了chatGPT这样优化的原因,回答:

使用IN子句时,MySQL需要对子查询中的每个值执行一次完整的表扫描,这可能会导致性能
问题。在此特定查询中,子查询将返回一个具有多个源D的单个D,因此MySQL需要执行多
次表扫描。此外,如果operation_logs表很大,那么子查询可能会占用大量时问和资源。
要改进此查询,您可以将子查询改为连接,以避免使用IN子句。

 

学习了!

chatGPT不算是一个传统意义上的智能交互机器人了。

chatGPT已经是人类智慧的宝库,人们可以快速方便地从宝库中查找已存在的智慧。
至少,下次遇到不好优化的sql语句,可以试试往chatGPT里扔(笑)

周知博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:记一次sql优化,chatGPT已超神
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址