0

我有一张数据表。该表有订单条目,每个订单都有一些类型(或状态,例如已订购、...、抛光、包装、发货)。

现在,我想做这个查询。

select * from orders as o 
  where not exists
  (SELECT * from orders as oo 
    where 
    o.order = oo.order and 
    oo.type="SHIPMENT")

type 和 shipping 有一个索引,但它只在进行全扫描后使用。所以查询需要很长时间。我想直接呈现数据。

4

1 回答 1

0

启用索引orders.type并不一定意味着将使用该索引。事实上,如果没有足够的选择性,索引是不会被使用的。此外,如果您使用NOT INorLEFT JOIN/IS NULL方法而不是NOT EXISTS

// LEFT JOIN/IS NULL:
SELECT o.* 
FROM orders o
LEFT JOIN orders oo ON (oo.order = o.order AND oo.type="SHIPMENT")
WHERE oo.id IS NULL
于 2011-02-20T18:57:55.327 回答