请教个问题哈:WHRE条件中指定的数据范围,如:field_1 IN (SELECT field FROM table1),和使用inner join table1,哪个性能更好?

提问者:帅平 问题分类:数据库
请教个问题哈:WHRE条件中指定的数据范围,如:field_1 IN (SELECT field FROM table1),和使用inner join table1,哪个性能更好?
2 个回答
我怕我伸手不及松手为空
我怕我伸手不及松手为空
如果子查询返回的结果集较小,或者连接操作涉及的表数据量不大,两种方式的性能一般差别不大;如果数据量很大,join可能更适合,doris使用 CBO 和 RBO 结合的优化策略,RBO 支持常量折叠、子查询改写、谓词下推等,CBO 支持 Join Reorder。
发布于:1周前 (09-03) IP属地:四川省
有你我就幸福
有你我就幸福
这个得根据实际case对比看看:
1、子查询可能会导致性能问题;如果子查询返回的结果集较大,可能会消耗较多的内存和计算资源。另外,子查询可能需要单独执行,然后与外层查询进行匹配,这可能会增加查询的执行时间
2、在大部分场景,如果连接条件和索引使用得当,doris可以利用索引快速定位匹配的行,提高查询性能
发布于:1周前 (09-03) IP属地:四川省
我来回答