假如我拥有 A 、B 两张表
当我查询
select * from A left join B on A.id = B.aid where A.name = '名字'
我将这里的 sql 提供给分析工具,他给到我的结果是这样的
第一步
查询出 a 表的所有数据,用数据表格呈现出来
例如
|id| name|
|---|----|
|1 |啊 |
|2 | 是的|
第二步
查询出 b 表的所有数据,(好像根据原理来讲是直接那 on 的条件来查 b 表)
|aid| name|
|---|----|
|1 | 名字|
|2 | 是的|
|3 | 的撒|
如果是根据 on 的条件来查询的话,结果大致是这样的(过滤掉了 aid 为 3 的)
|aid| name|
|---|----|
|1 |名字 |
|2 | 是的|
然后是第四步 两个表连接
|id| a.name|aid| b.name|
|---|----|---|----|
|1 |啊 |1 |名字 |
|2 |是的|2 | 是的|
最后是第五步 过滤 where 得到
|id| a.name|aid| b.name|
|---|----|---|----|
|1 |啊 |1 |名字 |
大致意思是这样的,将 sql 的执行过程中的每一个步骤出来的数据集输出出来,用 gpt 是可以做到的 我想问问有没有现成的这种工具,最好是基于本地的,如果能连数据库更好
我认为这样更有利于大家优化 sql ,或者容易看出哪里写错了
1
dongruixuan 41 天前
postgres 的话,这种 visualizer 感觉就很够用了 https://pev2.pages.dev/ 。是不是不太需要把数据集显示出来
|
2
newaccount 41 天前
不现实
脑子中静态分析的结果与数据库实际执行差距可能非常大 数据量不同,引擎是否选择使用索引都不一定的 别想了,看执行计划得了 |