天天看點

sql優化

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的效率下定義的時候,應該再加上一個條件,就是所在的列是否有索引或者是否是主鍵。如果有索引或者主鍵性能沒啥差别,如果沒有索引,性能差别不是一點點!

上一篇: SQL優化
下一篇: sql優化

繼續閱讀