joins 和子查询(subqueries

      举个例:

SELECT supplier_id, name

 

FROM supplier s

 

WHERE EXISTS (SELECT *

 

              FROM part p

 

              WHERE p.inventory_qty < 10

 

                AND p.supplier_id = s.supplier_id);

 

这个子查询与 SELECT 指令是有关联的,这个查询将会遍历 supplier 表的所有行,如果在 inventory_qty part 表的 supplier_id 列上没有索引将会导致多重的查询,也就是 part 表会全表搜索。不过可以重写这个查询用一个 join, 例:

SELECT s.supplier_id, s.name

 

FROM supplier s JOIN part p

 

ON p.supplier_id = s.supplier_id

 

WHERE p.inventory_qty < 10;