Könnten Sie mir bitte im Folgenden helfen?MySQL/löschen von/Warum ist es so langsam?
Der MySQL-Befehl unten läuft über 4 Sekunden auf einem modernen PC, wo nichts anderes ausgeführt wird, auch wenn mehrmals ausgeführt:
DELETE FROM table1
WHERE column1 LIKE 'pattern1%' AND
column2 IN (SELECT column3 FROM table2 WHERE column4 = 'pattern2')
tabelle1 enthält ca.. 1100 Datensätze, von denen 95% mit Spalte1/Muster1% übereinstimmen. ca.
table2 enthält. 5000 davon, die nahe Null sind, stimmen mit column4/pattern2 überein.
Host: MySQL v5.7, Ubuntu 16 64 bit, schneller SSD, mem InnoDB Pool ist 1 GB
es in einem einfacheren oder schnelleren Weg machen kann? Vielen Dank.
Abfrage-Plan:
+----+--------------------+--------+------------+------+---------------+------+---------+------+------+----------+-------------+
| 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 |
+----+--------------------+--------+------------+------+---------------+------+---------+------+------+----------+-------------+
Bitte zeigen Sie den Abfrageplan –
sind column1 und column2 indiziert? Können Sie uns den create table-Code für table1 anzeigen? – barudo
Anders als Indizes sieht diese Abfrage für mich ziemlich optimal aus. Bitte versuchen Sie es mit EXPLAIN. –