首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

96 - or exists写法分析与优化方法

偶然看到一个国产数据库的SQL优化介绍: 下面分析一下这两种写法的优劣: 原or exists写法(写法1): 如果test表结果集小(不含or条件), 那么最终返回的结果集也小,如果test_bak...上面的改写还漏掉了一个比较重要而且常见的情况, 那就是test表结果集大, 最终结果集小的场景, 这个场景在OLTP系统也是比较常见的, 这种情况改成union all是最佳的(写法3): select...回到oracle数据库, 在版本12.2 前, 也要根据上面规则做对应的改写; 在12.2及以上版本,如果写法1效率差, 而且数据分布符合写法3 , 可以不需要改写, 而是通过or_expand的hint...让优化器根据指示, 做出查询转换变成写法3; 如果数据分布符合写法2, 还是需要手动改写....OLTP系统返回一般返回的结果集小, 写法1和写法3 总有一个是适用的 , 而且hint是可以应用到某个具体SQL的.

61610

SparkSql不同写法的一些坑(性能优化)

之前也有同学拿着sql来问,说这样写会不会影响运行效率: select tmp.A from (select A,B from testdata2) tmp 结论是 不用担心,这样写完全可以被优化...select A from testdata2 这样的效果,主要是 ColumnPruning(列裁剪) 和 CollapseProject(合并Project)这两种优化器起到作用。...在sparksql branch3.3 这样改写完全没问题,但毕竟3.3是新版本,大部分人都还没用上,换到3.3之前的版本,分分钟再给变(优化)成第一种写法(执行三遍的)。...这样类似的还有:count(xxx),count(distinct xxx) 等等,聚合函数在重复用时,不用担心,sparksql会给优化。...看看吧,不同的情况,会有不同的优化结果,如果知道原理,就能避开一些坑。

70810
领券