你能否在下面幫助我?MySQL /從/刪除它爲什麼這麼慢?
MySQL命令之下運行在4秒的現代PC在那裏沒有別的運行,即使在運行多次:
DELETE FROM table1
WHERE column1 LIKE 'pattern1%' AND
column2 IN (SELECT column3 FROM table2 WHERE column4 = 'pattern2')
table1中含有約其中95%的記錄匹配column1/pattern1%。
table2包含約。其中5000個接近零個匹配column4/pattern2。
主持人:MySQL的V5.7,Ubuntu的16的64位,快速的SSD,InnoDB的游泳池MEM爲1 GB
莫非更簡單或更快的方式做了什麼?謝謝。
查詢計劃:
+----+--------------------+--------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+--------------------+--------+------------+------+---------------+------+---------+------+------+----------+-------------+
| 1 | DELETE | table1 | NULL | ALL | NULL | NULL | NULL | NULL | 1179 | 100.00 | Using where |
| 2 | DEPENDENT SUBQUERY | table2 | NULL | ALL | NULL | NULL | NULL | NULL | 4601 | 1.00 | Using where |
+----+--------------------+--------+------------+------+---------------+------+---------+------+------+----------+-------------+
請顯示查詢計劃 –
是將column1和column2編入索引?你能告訴我們table1的創建表代碼嗎? – barudo
除了索引,這個查詢看起來相當適合我。請嘗試運行'EXPLAIN'。 –