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

PG原来可以写出如此复杂的业务逻辑

白鳝的洞穴 2026-01-13
95
昨天参加了一个SQL编程的活动-NineData SQL编程大赛的总决赛。说实在的,对于复杂的SQL编程,我只是一个门外汉,所以也头一次参加此类活动。作为一个DBA,我以前做的最多的是找出一些对系统“有害”的SQL,然后要求开发人员去拆分SQL,防止对系统产生致命影响。如果从这个角度去看,昨天进入决赛的8条SQL,都属于需要被枪毙的对象。
昨天总决赛的题目是数独,用一条SQL来解各种难度的数独题目。这个题目出得有些疯狂,不过确实有趣。实际上昨晚比赛比拼的是参赛选手算法优化的能力。最后获得冠军的郑凌云的解法确实令人拍案叫绝。
实在难以想象,一条SQL居然能够实现如此复杂的业务逻辑。我也是通过AI辅助阅读,才大体看明白了这个包含了:位运算(bitmask)、递归推理、回溯搜索、MRV、LATERAL 子查询优化、PostgreSQL 字节数组操作等高级技巧的算法。也惊叹SQL居然能够表达出如此复杂的算法思想来。
在实战生产环境,此类算法是不建议用SQL来实现的,不过SQL能够完成的操作之复杂还是令人惊叹。本次进入决赛的8条SQL,有7条是在PG数据库上实现的,一条是在MYSQL上实现的。MYSQL的参赛作者吴忌也感叹,他使用的算法和其他选手差不太多,为啥性能比其他决赛选手差。对于这种计算密集型的SQL语句,不同数据库在内核实现上的差异可能会让执行效率出现脚多大的差异。在做数独题这种场景中,哪怕是Oracle也不见得会比PG擅长。PG的丰富的语法让这道题目变得简单了很多,如果用Oracle来实现复杂递归,性能不见得就会好。
虽然不是太懂,不过昨晚还是乐在其中,也结识了一些和我们专业相差较远的一些算法高手,从他们解决问题的思路上,也深受启发。昨天参赛的多名选手都不讳言地说在他们参赛时都使用了AI辅助,AI辅助让他们的工作效率大大提升了。
在未来,一个某个领域的专家,在AI帮助下,可能可以完成更加复杂的工作,其工作效率会更高。比如AI可以十分精确地帮我总结出某条SQL的核心结构,并找出其中可能存在的优化点。
不知道这条生成出来的SQL执行效果如何,找机会我会去试一试,不过与AI同行,与AI共舞,可能会成为未来职场必备的技能。

文章转载自白鳝的洞穴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论