|
有两张表:
gal_voucher_item:1066行数据
gal_voucher_item_detail:423705行数据
现在想取出第一个表里item_iid不在第二个表的item_iid里的数据,
分别用minus/not in/not exists,sql和所需时间如下(呵呵,没写错吧):
minus:- Select *
- From gal_voucher_item item
- Where item_iid In (Select item_iid
- From gal_voucher_item
- Minus
- Select item_iid From gal_voucher_item_detail);
复制代码 时间:4.438/4.39 s
not in:
- Select * From gal_voucher_item Where item_iid Not In (Select item_iid From gal_voucher_item_detail);
复制代码
时间:没跑出来
not exists:
- Select *
- From gal_voucher_item item
- Where Not Exists (Select 1 From gal_voucher_item_detail detail Where item.item_iid = detail.item_iid);
复制代码
时间:没跑出来
总结:minus很快就出来了,而not in和not exists却跑都跑不出来,这是什么原因呢,谁能解释一下里面的原理,谢谢! |
|