绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
ToprowDB Dynamic Server 查询优化技术---子查询优化--02-3
2022-03-30 15:06:28

1.2 ANY/SOME/ALL类型的子查询
我们进行如下的子查询,分别用S6—S11表示:

S6: SELECT * FROM t3 WHERE b3 >= ANY (SELECT b1 FROM t1);

S7: SELECT * FROM t3 WHERE b3 >= ANY (SELECT a1 FROM t1);

S8: SELECT * FROM t3 WHERE b3 <= SOME (SELECT a1 FROM t1);

S9: SELECT * FROM t3 WHERE b3 = SOME (SELECT a1 FROM t1);

S10: SELECT * FROM t3 WHERE b3 <= ALL (SELECT a1 FROM t1);

S11: SELECT * FROM t3 WHERE b3 <= ALL (SELECT a1 FROM t1 WHERE a3=a1);

1.2.1 ToprowDB
1.2.1.1 S6语句
查看查询执行计划,子查询被优化。

SELECT * FROM t3 WHERE EXISTS (SELECT b1 FROM t1 WHERE a3=a1)

Estimated Cost: 4

Estimated # of Rows Returned: 1

1) informix.t3: SEQUENTIAL SCAN

2) informix.t1: INDEX PATH

(1) Index Name: informix. 102_7

Index Keys: a1 (Serial, fragments: ALL)

Lower Index Filter: informix.t3.a3 = informix.t1.a1

NESTED LOOP JOIN //子查询被消除

Query statistics:

-----------------

Table map :

----------------------------

Internal name Table name

----------------------------

t1 t3

t2 t1

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t1 6 1 6 00:00.00 2

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t2 3 1 3 00:00.00 0

type rows_prod est_rows time est_cost

-------------------------------------------------

nljoin 3 1 00:00.01 4

1.2.1.2 S7语句
查看查询执行计划,子查询被优化。

SELECT * FROM t3 WHERE EXISTS (SELECT a1 FROM t1 WHERE a3=a1)

Estimated Cost: 3

Estimated # of Rows Returned: 1

1) informix.t3: SEQUENTIAL SCAN

2) informix.t1: INDEX PATH

(1) Index Name: informix. 102_7

Index Keys: a1 (Key-Only) (Serial, fragments: ALL)

Lower Index Filter: informix.t3.a3 = informix.t1.a1

NESTED LOOP JOIN //子查询被消除

Query statistics:

-----------------

Table map :

----------------------------

Internal name Table name

----------------------------

t1 t3

t2 t1

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t1 6 1 6 00:00.00 2

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t2 3 1 3 00:00.01 0

type rows_prod est_rows time est_cost

-------------------------------------------------

nljoin 3 1 00:00.01 3

1.2.1.3 S8语句
查看查询执行计划,子查询被优化。

SELECT * FROM t3 WHERE EXISTS (SELECT id1 FROM t1 WHERE a3=a1)

Estimated Cost: 4

Estimated # of Rows Returned: 1

1) informix.t3: SEQUENTIAL SCAN

2) informix.t1: INDEX PATH

(1) Index Name: informix. 102_7

Index Keys: a1 (Serial, fragments: ALL)

Lower Index Filter: informix.t3.a3 = informix.t1.a1

NESTED LOOP JOIN //子查询被消除

Query statistics:

-----------------

Table map :

----------------------------

Internal name Table name

----------------------------

t1 t3

t2 t1

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t1 6 1 6 00:00.00 2

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t2 3 1 3 00:00.00 0

type rows_prod est_rows time est_cost

-------------------------------------------------

nljoin 3 1 00:00.00 4

1.2.1.4 S9语句
查看查询执行计划,子查询没有被优化。

SELECT * FROM t3 WHERE b3 = SOME (SELECT a1 FROM t1)

Estimated Cost: 4

Estimated # of Rows Returned: 1

1) informix.t3: SEQUENTIAL SCAN

Filters: informix.t3.b3 = ANY <subquery>

Subquery:

---------

Estimated Cost: 2

Estimated # of Rows Returned: 1

1) informix.t1: SEQUENTIAL SCAN

Query statistics:

-----------------

Table map :

----------------------------

Internal name Table name

----------------------------

t1 t3

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t1 6 1 6 00:00.02 4





Subquery statistics:

--------------------

Table map :

----------------------------

Internal name Table name

----------------------------

t1 t1

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t1 3 1 3 00:00.00 2

1.2.1.5 S10语句
查看查询执行计划,子查询没有被优化。

SELECT * FROM t3 WHERE EXISTS (SELECT b1 FROM t1 WHERE a1>2)

Estimated Cost: 2

Estimated # of Rows Returned: 1

1) informix.t3: SEQUENTIAL SCAN

Filters: EXISTS <subquery>

Subquery:

---------

Estimated Cost: 2

Estimated # of Rows Returned: 1

1) informix.t1: INDEX PATH

(1) Index Name: informix. 102_7

Index Keys: a1 (Serial, fragments: ALL)

Lower Index Filter: informix.t1.a1 > 2

Query statistics:

-----------------

Table map :

----------------------------

Internal name Table name

----------------------------

t1 t3

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t1 6 1 6 00:00.01 2

Subquery statistics:

--------------------

Table map :

----------------------------

Internal name Table name

----------------------------

t1 t1

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t1 1 1 1 00:00.00 2

1.2.1.6 S11语句
查看查询执行计划,子查询被优化(半连接优化)。

SELECT * FROM t3 WHERE EXISTS (SELECT a1 FROM t1 WHERE b3=b1)

Estimated Cost: 4

Estimated # of Rows Returned: 1

1) informix.t3: SEQUENTIAL SCAN

2) informix.t1: SEQUENTIAL SCAN (First Row)

Filters: informix.t3.b3 = informix.t1.b1

NESTED LOOP JOIN (Semi Join)

Query statistics:

-----------------

Table map :

----------------------------

Internal name Table name

----------------------------

t1 t3

t2 t1

type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t1 6 1 6 00:00.00 2



type table rows_prod est_rows rows_scan time est_cost

-------------------------------------------------------------------

scan t2 1 1 3 00:00.00 2

type rows_prod est_rows time est_cost

-------------------------------------------------

nljoin 6 1 00:00.00 4
————————————————
版权声明:本文为CSDN博主「那海蓝蓝」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fly2nn/article/details/61924794

分享好友

分享这个小栈给你的朋友们,一起进步吧。

ToprowDB
创建时间:2022-03-30 14:20:33
华胜信泰ToprowDB数据库软件产品(以下简称:ToprowDB)是基于国际领先的云计算、大数据理念与技术,自主设计并研发的“自主可控、安全可信、高效可用”的高性能数据库软件产品。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~