mysql 刪除資料慢
最近做專案,一張單表臨時資料達到3億,非常影響資料庫效能,就考慮刪除表中多餘的資料,就遇到這個刪除資料非常緩慢的問題了!
直接上程式碼吧:
DELETE FROM t_orders_detail WHERE pro_record_id in(SELECT a.prId FROM (SELECT pr.id AS prId FROM t_pro_record pr WHERE pr.state=3 LIMIT 0,1) a);
這種是用in的一般寫法,刪除起來奇慢!
後來經過該進,使用inner join 的方式刪除起來,效率成倍的提升!
DELETE od FROM t_orders_detail od,(SELECT * FROM t_pro_record pr WHERE pr.state=3) a WHERE od.pro_record_id=a.prId;
總結:像mysql這個關係型資料庫,最好的刪除方式就是使用連線的方式刪除,可以大大提高刪除效率!
相關推薦
mysql 刪除資料慢
最近做專案,一張單表臨時資料達到3億,非常影響資料庫效能,就考慮刪除表中多餘的資料,就遇到這個刪除資料非常緩慢的問題了! 直接上程式碼吧: DELETE FROM t_orders_detail WHERE pro_record_id in(SELECT a.prId FROM (SE
MySql刪除資料 not in 用法
第一種情況: delete from table where id not in (1,2,3) 第二種情況下: delete from tableA where id not in (select id from tableB) 第三種情況下: delete from table
吳裕雄 09-MySQL刪除資料表
以下為刪除MySQL資料表的通用語法:DROP TABLE table_name; DROP TABLE runoob_tbl; 使用PHP指令碼刪除資料表PHP使用 mysqli_query 函式來刪除 MySQL 資料表。該函式有兩個引數,在執行成功時返回 TRUE,否則返回 FALSE。語法mysq
Mysql 刪除資料表的三種方式
刪除程度可從強到弱如下排列: 1. drop table tb; drop 是直接將表格刪除,無法找回。例如刪除 user 表: drop table user; 2. truncate (table) tb; truncate 是刪除表中所有資
mysql刪除資料表中重複記錄保留一條
刪除資料庫中重複的記錄由兩種形式: 第一種是資料表中所有的欄位都重複,第二種是資料庫中部分欄位重複 這裡針對第二種情況重複: delete from app_user_verify where id not in (select a.id from (
Mysql--刪除資料表重複行
準備示例資料 以下sql建立表,並將示例資料插入到用於演示的contacts表中。 CREATE TABLE contacts ( id INT PRIMARY KEY AUTO_INCREMENT, first_val VARCHAR(50) DEFAULT NULL, last
MySQL查詢資料慢原因
針對一直都這麼慢的情況 如果在資料量一樣大的情況下,這條 SQL 語句每次都執行的這麼慢,那就就要好好考慮下
MySQL刪除重複資料,只保留其中最大id的一條
今天同事寫了個刪除重複資料保留一條記錄的資料庫語句,問我錯在哪兒,正好給大家講講【注:以下語句只單對MYSQL資料庫】 語句 -- 問題: delete from `show` where id not in ( select MAX(id)
Mysql InnoDB 資料更新/刪除導致鎖表
一. 如下對賬表資料結構 create table t_cgw_ckjnl ( CNL_CODE varchar(10) default ' ' not null comment '通道編碼', CNL_PLT_CD varchar(32) default ' ' n
MySQL刪除大批量資料
1.刪除大表的部分資料 一個表有1億6000萬的資料,有一個自增ID。最大值就是1億6000萬,需要刪除大於250萬以後的資料,有什麼辦法可以快速刪除? 看到mysql文件有一種解決方案:http://dev.mysql.com/doc/refman/5.0/en/delete.html  
mysql 刪除表資料但不刪除表結構SQL語句
當一份資料亂糟糟的時候,想把資料刪除掉,重新來過,但是又覺得太懶,不想重新定義一些表字段什麼的,索性就把資料庫內容給全部刪掉,重新匯入一遍資料。 我是在mysql客戶端,使用SQL語句進行刪除的。 下面是兩種SQL語句: 方法一: truncate table 表名; //
一步一步學MySQL----7 插入、更新、刪除資料
7.1 插入完整資料記錄 語法: insert into table_name(field1,field2,field3,……)values(value1,value2,value3,……); 例如: 我們先建立一張user表,如下: mysq
使用binlog日誌恢復MySQL資料庫刪除資料的方法
binlog日誌簡介: binlog 就是binary log,二進位制日誌檔案,這個檔案記錄了MySQL所有的DDL和DML(除了資料查詢語句)語句,以事件形式記錄,還包含語句所執行的消耗的時間。 binlog日誌包括兩類檔案: 1)二進位制日誌索引檔案(檔名字尾為.index):用於
Mysql 刪除 資料庫重複資料 並保留 1 條記錄
查詢所有重複資料 SELECT * FROM table WHERE (col1,col2) IN (SELECT col1,col2 FROM table GROUP BY col1,col2 HAVING count(id) > 1); 由於Mysql 不能對
MySQL刪除重複資料的解決方案
對於重複的資料,有兩種情況: 1️⃣兩行資料完全相同 2️⃣某欄位相同 3️⃣id不同,其他欄位相同 第1️⃣種情況的解決方案: 思路: 1.查出表中所有行,不顯示重複行。 2.建立一張臨時表,儲存查到的新表資料。 3.刪除原表資料 4.把臨時表的資料插入到原表中。 5.刪除臨時
MySQL使用binlog2sql閃回誤刪除資料
查詢資料庫相關配置引數 root [test]> show global variables like ‘binlog%format%’; +—————+——-+ | Variable_name | Value | +—————+——-+ | b
MySQL 高階操作——新增資料、更新資料、刪除資料、查詢資料
新增資料 多資料插入 只要寫一次insert指令,但是可以插入多條記錄 語法:insert into 表名 [(欄位列表)] values (值列表1),(值列表2),(值列表3); 主鍵衝突 主鍵衝突,在有的表中,使用的是業務主鍵(欄位有業務含義),但是往往在進行
MySQL 新增、更新和刪除資料
一、新增資料 在MySQL中使用INSERT新增資料分為: 為表中所有欄位新增資料 為表的指定欄位新增資料 同時新增多條資料 1.為表中所有欄位新增資料 使用insert的MySQL語句為: INSERT INTO 表名(欄位名1,欄位名2,,,,,欄位名
能否向Mysql檢視中插入/更新/刪除資料
要通過檢視更新基本表資料,必須保證檢視是可更新檢視,即可以在INSET、UPDATE或DELETE等語句當中使用它們。對於可更新的檢視,在檢視中的行和基表中的行之間必須具有一對一的關係。還有一些特定的其他結構,這類結構會使得檢視不可更新。 如果檢視包含下述結構中的任何
mysql從庫刷資料慢,有延時的情況處理
在一次生產環境排查問題中,發現mysql的從庫延時很大。後來通過如下操作解決。 先看下伺服器的innodb_flush_log_at_trx_commit引數值,如果值為非2,將引數innodb_flush_log_at_trx_commit值設定為2 mysql> show va