SQL IN and Exists 效率高低比較

2021-06-07 05:38:57 字數 774 閱讀 2585

in 和exists

in 是把外表和內錶作hash 連線,而exists 是對外表作loop 迴圈,每次loop 迴圈再對內

表進行查詢。

一直以來認為exists 比in 效率高的說法是不準確的。

如果查詢的兩個表大小相當,那麼用in 和exists 差別不大。

如果兩個表中乙個較小,乙個是大表,則子查詢表大的用exists,子查詢錶小的用in:

例如:表a(小表),表b(大表)

1:select * from a where cc in (select cc from b)

效率低,用到了a 表上cc 列的索引;

select * from a where exists(select cc from b where cc=a.cc)

效率高,用到了b 表上cc 列的索引。

相反的2:

select * from b where cc in (select cc from a)

效率高,用到了b 表上cc 列的索引;

select * from b where exists(select cc from a where cc=b.cc)

效率低,用到了a 表上cc 列的索引。

not in 和not exists

如果查詢語句使用了not in 那麼內外表都進行全表掃瞄,沒有用到索引;

而not extsts 的子查詢依然能用到表上的索引。

所以無論那個表大,用not exists 都比not in 要快。

研效優化實踐 WeTest提效測試

1.1真通過與假通過 每次自動化相容測試結束後,wetest平台會返回乙份對應的測試報告,涵蓋測試過程中的詳細資訊,如裝置日誌 截圖 效能資料等,可以做進一步的結果分析。概覽資料涵蓋本次裝置維度的測試結果,包括通過的裝置數量 未通過的裝置數量等。裝置維度未通過的定義為發生相容性問題,如crash a...

Filter revealtrans 濾鏡效果

任意位置插入 filter revealtrans 濾鏡效果 filter revealtrans duration 轉換的秒數,transition 轉換的型別 表示式中的transition引數的引數值有24中,以代號0 23來表示,分別代表24中顯示型別,具體的引數值列表如下所示 同時還可以參...

UI動效基礎 AE動效表現課

第01課 ui動效概述 課時1 關於ui動效的介紹及行業概述 課時2 動效設計在工作領域的應用 課時3 動效設計如何學習 第02課 ae軟體基本操作 課時1 介面介紹及合成設定 課時2 合成的建立 課時3 檔案的匯入 課時4 基礎圖層簡介 課時5 形狀圖層的基本操作 課時6 圖層樣式的新增 課時7 ...