创建外部引用时数据库处理行数及指定场景下查询执行次数确认
带外部引用的查询行数计算问题
先针对你的两个问题逐一解答:
1. 创建外部引用时数据库系统会处理多少行?
结合你给出的表数据和查询逻辑:
- 带外部引用的子查询(即你提到的“因子查询”)需要为父查询的每一行执行一次
- 父查询过滤前要处理100行(20行t1 × 5行t2)
- 单次执行子查询需要处理16000行(20行t4 × 80行t3 × 10行t5)
所以整个外部引用过程中,数据库需要处理的总行数为:100 × 16000 = 1600000行。
2. 该完整查询的总处理次数是否为1600000次?
不是的,完整查询的总处理行数需要把父查询自身的处理量也纳入计算:
- 父查询过滤前的基础处理量是100行
- 加上外部引用子查询的1600000行
按照理论逻辑计算,总处理行数应为 100 + 1600000 = 1600100行。
不过要补充一点:实际数据库执行时可能会有优化(比如谓词下推、缓存重复的子查询结果等),如果子查询的外部引用参数存在重复值,数据库可能会复用之前的计算结果,从而减少实际处理的行数。但仅按你给出的原始计算逻辑,总处理行数并非1600000行。
内容的提问来源于stack exchange,提问作者Parkthrown
相关产品推荐
相关产品推荐

