類似for迴圈
for
(int i=5;
....
...)
}
如果小的迴圈在外層,對於資料庫連線來說就只連線5次,進行5000次操作
如果1000在外,儘管總共也是進行5000次操作,但需要進行1000次資料庫連線,從而浪費資源,增加消耗
原理:a是大表,b是小表
select
*from a where a.id in
(select b.id from b)
等價於for
select
*from b
forselect
*from a where a.id = b.id
結論:當b表資料集小於a表資料集,用in
select
*from a where
exists
(select
1from b where b.id=a.id)
等價於for
select
*from a
forselect
*from b where b.id=a.id
結論:當a表資料集小於b表資料集,用exists
對於exists
select …from table where exists(subquery)可以理解為:將主查詢的資料放入子查詢中做條件驗證,根據驗證結果(true或false)來決定主查詢的資料是否得以保留
1.exists (subquery) 只返回true或false,因此子查詢中的select * 也可以是select 1 或 select 『x』,官方說法是實際執行是會忽略select清單,因此沒有區別。
2.exists 子查詢的實際執行過程可能經過優化而不是我們理解上的逐條對比,如果擔心效率問題,可以進行實際檢驗以確定是否有效率問題。
3.exists 子查詢往往也可以用條件表示式、其他查詢或者join來代替,何種最優需要具體問題具體分析。
mysql 擷取查詢分析
1.1 是什麼 1 mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具 體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。2 具體指執行時間超過long query time值的sql,則會被記錄到慢查詢日誌中。...
mysql資料庫查詢作業 mysql資料庫查詢練習
建立四張資料表 學生表student 學號,姓名,性別,出生年月日,所在班級 課程表course 課程號,課程名,教師編號 成績表score 學號,課程號,成績 教師表teacher 教師編號,教師名,教師性別,出生年月日,職稱,所在部門 新增資訊 學生表 insert into student v...
mysql資料庫查詢
這一段時間在實習的公司裡和別人共同開發乙個新功能,我主要偏資料庫操作!其中有乙個是對資料的校驗,而這些資料在資料庫裡是以樹的形式存在!沒有問別人之前我是打算以迴圈的方式來做,週日花了整整一下午把資料表研究了一番發現不是我想象的那麼簡單,我先把這個要求簡單的描述一下 首先是資料表裡的資料,欄位太多,我...