1. 程式人生 > >常用操作提高效率 之 for 與in

常用操作提高效率 之 for 與in

問題如何而來:

   對於剛參加工作的我  批量刪除資料通常採用的是前端傳遞到後臺一個物件的id字串  通過逗號分隔的多個id  或者收的直接是一個id陣列 兩個原理一樣第一個後臺要在次使用split(",")做分隔成陣列 ,然後通過遍歷陣列  採用 delete(id) 逐條的執行刪除操作。

以前  這樣寫大家應該明白什麼意思  迴圈裡 通過每條的id 執行一次刪除

for(){

 delete  from tb_name where id = ?

}

這樣是我一直採用的方式。

首先從功能實現的角度 上面的解決方案並沒有任何問題。

那麼為什麼我會記錄自己對for 與in  的效率問題   是另外一個朋友說他在實現批量處理刪除操作的時候 他們的技術總監說這樣的效率比較慢  讓採用in

實現方式很簡單  就是將以前的單個逐條刪除  轉為 將id陣列轉為一個id集合  sql 實現如下 方式  

delete from tb_name where  id  in (  傳入id的集合)    我們通常實現刪除一條資料的操作都是採用主鍵id來操作的。

那麼為什麼說採用in的方式效率更高那?

我自己的理解 for迴圈的方式  每執行一次刪除操作就要在資料庫連線池中建立一次連結 執行一次sql的解析等一系列過程  同時增加了資料庫的IO操作

而in 只需要一次的連線  採用or 的形式  對sql的解析也只需要一次  所以從這些方面就說明了 採用in的方式效率更高一些。

其實兩種方式都是來解決實際的問題,如果在後臺系統比如OA 等辦公系統上  這些內部系統在兩者的效率上我們並不會能感受到所以都可以,應用要用在適合的位置,首先要解決問題。