1.查詢一個表中id不在另一個表中的記錄
select userId, 'true' from user_ where userId not in (select user_id from user_var_data) order by userId;
user_ : 60W+
user_var_data:60W+
腫麼辦:都知道not in是個大坑,如何優化呢?
可以想象下,通過left join 來說篩選出來差異的結果【inner join 是拿出來相同的結果】
select a.userId,'true' from from user_ a left join user_var_data b on a.user where a.userId = b.user_id where b.user_id is null order by a.userid;
一個執行耗時:7s,一個執行耗時2s.
這是一個很好的嘗試,把2個表不同的結果列印出來。
二:in 和 or
i> 查詢列的字段是否是索引段狠重要
ii> 是以在給in和or的效率下定義的時候,應該再加上一個條件,就是所在的列是否有索引或者是否是主鍵。如果有索引或者主鍵性能沒啥差别,如果沒有索引,性能差别不是一點點!