我希望这个问题没有被问到,我试图寻找类似的问题,但可能使用了错误的关键字。总之,我碰到一个情况,我必须寻找谁从来没有下订单的客户,所以在查询运行这样的:改善选择不在
SELECT * FROM customers
where customers_id NOT IN (SELECT customers_id FROM orders)
我看,这是不好的嵌套SELECT
S,所以什么是更好的选择?
此外,我应该做select *
还是应该指定字段,我还在某个地方看过,最好是select *
?
谢谢大家提前。
看到的答案后,我有一个疑问EXISTS的优化。你可以请时间StilesCrisis和Joop Eggen的解决方案,看看哪一个跑得更快?感谢 – 2012-02-04 08:03:21
矿:显示行0 - 29(5390总计,查询花费0.0155秒) StilesCrisis:显示行0 - 29(5390总计,查询花费0.0090秒) 乔普埃根:显示行0 - 29(5390总共查询花费0.0039秒) 注:我每跑一次,可能需要运行多次获得平均时间的权利。此外,对于乔普的一个我用SELECT *,想知道如果事情可以改善,如果我不与特定的字段 – mr1031011 2012-02-04 08:35:48
选择不管你相信与否,之后多次运行乔普的答案仍然是在我的情况下更快。 – mr1031011 2012-02-04 08:39:36