?這里簡單的給自己做個記錄:
? ? exist和in的區(qū)別:
? select ? ?* ? ? ?from ? a ? ? where ? ?id ? ?in ?(select ?id ?from ?b) ; ? ?
? select ? ?* ? ? ?from ? a ? ? where ? ?id ? ?exists? (select ?id ?from ?b) ; ? ?
? ?對于這樣的sql查詢同一個庫蚕愤,結果是一樣的,但是查詢速度對于不同情況,
差別較大侠碧;
? ? 使用in ,sql語句是先執(zhí)行子查詢辜荠,也就是先查詢b表驶冒,在查a表殊轴,
? ? 而使用exists是先查主表a ,再查字表b; 對于主表數據較多時嚎杨,我們
使用in速度比exist更快,反之发侵,從表b較大時交掏,使用exist插敘速度更快(都會使用索引),
? ?如果使用的是not in與not exists,直接使用not exists刃鳄,因為not in 會進行全表掃描
不走索引盅弛,not exists會走索引。?