優化一條UPDATE語句
最近見到一條開發人員寫的UPDATE語句, 覺得沒什麼不對, 可又覺得有地方不對, 因為效能低下.
UPDATE A SET
(COL2, COL3) = (SELECT COL1,'T'
FROM B WHERE B.COL1=A.COL1)
WHERE EXISTS
(SELECT B.COL1 FROM B WHERE B.COL1=A.COL1)
也就更新幾十萬條記錄, 沒這麼慢的啊. 最後發現這個SQL語句可以簡化為如下.
UPDATE A SET COL2=COL1, COL3='T'
WHERE EXISTS
(SELECT B.COL1 FROM B WHERE B.COL1=A.COL1)
說明還有很多可以提高的地方.值
相關推薦
優化一條UPDATE語句
最近見到一條開發人員寫的UPDATE語句, 覺得沒什麼不對, 可又覺得有地方不對, 因為效能低下. UPDATE A SET (COL2, COL3) = (SELECT COL1,'T' FROM B WHERE B.COL1=A.COL1) WHERE EXISTS (SELECT B
一條update語句的優化
1.首先給出update語句 UPDATE T_TEST A SET A.MANA_CODE = ( SELECT MANA_CODE FROM T_TEST2 B WHERE A.APPLY_NO = B.APPLY_NO ) WITH UR; 2.分析: 這條
Mysql 一條update語句,更新多張表(存在關聯的表)
UPDATE table1 LEFT JOIN table2 ON table1.xx=table2.xx (關聯的欄位) SET table1.xx=value,table2.xx=value (update value)WHERE table1.xx=xx
mysql 一條update語句實現兩個表資料合併
實現兩個表的資料合併。比如,有全校所有人的09年的成績,現在想把10年的某一科的成績新增進去。 其實很簡單,一條語句就能搞定。 當然了,實現的方法有太多。這裡說一個update語句的。 UPDATE table1,table2 SET table1.field1 = ta
一條sql語句update 多條記錄
key mysq ech tle date class spl imp set UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END
執行一條sql語句update多條記錄實現思路
如果你想更新多行資料,並且每行記錄的各欄位值都是各不一樣,你會怎麼辦呢?本文以一個示例向大家講解下如何實現如標題所示的情況,有此需求的朋友可以瞭解下 通常情況下,我們會使用以下SQL語句來更新欄位值: 複製程式碼 程式碼如下: UP
Mysql 一條SQL語句實現批量更新資料,update結合case、when和then的使用案例
如何用一條sql語句實現批量更新?mysql並沒有提供直接的方法來實現批量更新,但是可以用點小技巧來實現。 複製程式碼 程式碼如下: UPDATE mytable SET myfield = CASE id WHEN 1 THEN
MySQL面試題之如何優化一條有問題的SQL語句?
類型 審查 存儲ip code 減少 提高 利用 存儲空間 not 如何優化一條有問題的sql語句? 針對sql語句的優化。我們可以從如下幾個角度去分析 回歸到表的設計層面,數據類型選擇是否合理 大表碎片的整理是否完善 表的統計信息,是不是準確的 審查表的執
一條update SQL語句是如何執行的
一條更新語句的執行過程和查詢語句類似,更新的流程涉及兩個日誌:redo log(重做日誌)和binlog(歸檔日誌)。比如我們要將ID(主鍵)=2這一行的值加(c:欄位)1,SQL語句如下: update T set c=c+1 where ID=2; redo log 重做日誌是InnoDB引擎
用一條SQL語句查出每門課都大於80分的學生的姓名
src exist spa weight utf8 exists null ont http 用一條SQL語句查出每門課都大於80分的學生的姓名,數據表結構如下: 建表SQL如下: SET FOREIGN_KEY_CHECKS=0; -- --------------
如何一條sql語句查找表中第二大值
roman splay 排名 數據庫 依然 sel col eight over 例1: 一個Customer表,一個字段Value,現請問如何查到Value中第二大的值 select max(value) from Customer
Oracle 在函數或存儲過程中執行一條插入語句並返回主鍵ID值
num c# 如果 acl get col oracle style 建表語句 有時,我們需要往一張表插入一條記錄,同時返回主鍵ID值。 假定主鍵ID的值都是通過對應表的SEQUENCE來獲得,然後進行ID賦值 這裏有幾種情況需要註意: 1)如果建表語句含有主鍵ID的觸發器
cakephp獲取最後一條sql語句
ger figure manage 設置 語句 代碼 sql語句 echo data 1.在app\config\core.php中設置Configure::write(‘debug‘, 2); 2.頁面上追加如下代碼: $dbo = ConnectionManage
laravel 獲取上一條insert語句產生的id
insert語句 insert pdo des span aca col nbsp facade <?php //頭部引入DB類 use Illuminate\Support\Facades\DB; //在方法中獲取獲取上一條insert語句產生的id $id =
用一條sql語句求出不同班級中男生和女生的數量
表: mysql> select * from gg; +------+------+-----+-------+ | id | name | sex | class | +------+------+-----+-------+ | 1 | 張三 | 男 | 1
詳解一條sql語句的執行過程
inno double other into 數據過濾 計算 var idt 底層實現 SQL是一套標準,全稱結構化查詢語言,是用來完成和數據庫之間的通信的編程語言,SQL語言是腳本語言,直接運行在數據庫上。同時,SQL語句與數據在數據庫上的存儲方式無關,只是不同的數據庫對
一條SQL語句實現查詢成績-60、60~80、+80的人數的方法
總結一下學到的一個SQL方法。下面我建立一個數據表: SELECT * FROM students; 可以看到資料表中存在六條資料,如果使用傳統的查詢方法,我們需要三條SQL語句,分別是: select count(*) from students where score<6
MySQL實戰 | 01-當執行一條 select 語句時,MySQL 到底做了啥?
原文連結:當執行一條 select 語句時,MySQL 到底做了啥? 也許,你也跟我一樣,在遇到資料庫問題時,總時茫然失措,想重啟解決問題,又怕導致資料丟失,更怕重啟失敗,影響業務。 就算重啟成功了,對於問題的原因仍不知所以。 本文開始,記錄學習《MySQL實戰45講》專欄的過程。 也許有人會問,你記
一條查詢語句是如何執行的
資料庫的內建函式,儲存過程,檢視,觸發器都在server層 聯結器:連線之後如果沒有後續操作就屬於一個空閒連線,資料庫許可權也在這裡。 如果連線之後很長時間沒有後續操作,就會斷開連線,如果這時去查詢就會丟擲異常,長連線就是一直使用這個連線,短連線就是執行了幾次查詢就會斷開連線。 所以
一條更新語句是如何執行的
更新語句設計到倆個重要的日誌,redo_log 和binlog 一:redo_log 就是寫日誌,再寫磁碟,分開操作,提升效率。redo_log日誌如果滿了,就要寫道磁碟,有倆個指標,一個新增,一個寫入磁碟, 即使異常重啟也不會丟失資料 二:binlog redo_log是inn