如果连接的成本较低,那么优化器可自动将子查询更改成连接。
图: 平铺子查询的部分 SET EXPLAIN 输出
QUERY: ------ SELECT company, fname, lname, phone FROM customer c WHERE EXISTS( SELECT customer_num FROM cust_calls u WHERE c.customer_num = u.customer_num) Estimated Cost: 6 Estimated # of Rows Returned: 7 1) virginia.c: SEQUENTIAL SCAN 2) virginia.u: INDEX PATH (First Row) (1) Index Keys: customer_num call_dtime (Key-Only) (Serial, fragments: ALL) Lower Index Filter: virginia.c.customer_num = virginia.u.customer_num NESTED LOOP JOIN (Semi Join)
有关 SET EXPLAIN ON 语句的更多信息,请参阅显示由优化器选择的查询计划的报告。
首行扫描是表扫描的一种变形形式。当数据库服务器找到一个匹配时,表扫描将停止。
忽略副本索引扫描是索引扫描的一种变形形式。 数据库服务器不扫描副本。
半连接是嵌套循环连接的一种变形形式。当第一个匹配找到时,数据库服务器将停止内表扫描。 有关半连接更多信息,请参阅嵌套循环连接。