DELETE FROM HAVING COUNT (*) in MySQL

Ok, es gibt hier schon ein paar Posts und noch weniger im Web. Ich habe buchstäblich jeden von ihnen ausprobiert und kann nichts zum Laufen bringen. Hoffentlich kann hier jemand Mitleid mit mir haben :)

Hier sind die Daten, mit denen ich arbeite. Ich möchte alle diese Datensätze löschen.

<code>SELECT
part_desc, count(*) as rec_num
FROM ag_master
GROUP BY part_desc HAVING COUNT(*) > 1000;

+--------------------------------------+---------+
| part_desc                            | rec_num |
+--------------------------------------+---------+
| SILICON DELAY LINE, TRUE OUTPUT      |    1092 |
| LOADABLE PLD                         |    1401 |
| 8-BIT, FLASH, 8 MHz, MICROCONTROLLER |    1411 |
| FPGA                                 |    1997 |
| 8-BIT, MROM, 8 MHz, MICROCONTROLLER  |    3425 |
+--------------------------------------+---------+
5 rows in set (0.00 sec)
</code>

Der Code, der dies am ehesten tun würde, ist im Folgenden dargestellt. Die Syntax überprüft, ob alles in Ordnung ist und es läuft, aber es scheint, als würde die Datenbank hängen bleiben. Ich habe es so lange wie 10 Minuten laufen lassen und es passiert nie etwas, also brich ich es ab.

<code>DELETE
FROM ag_master
WHERE part_id IN (
  SELECT part_id
  FROM ag_master
  GROUP BY part_desc
  HAVING COUNT(*) > 1000
);
</code>

Hier ist der EXPLAIN-Plan auf der TMP-Tabelle

<code>mysql> EXPLAIN SELECT * FROM ag_master WHERE part_desc IN (SELECT part_desc FROM tmp);
+----+--------------------+-----------+--------+---------------+------+---------+------+--------+-------------+
| id | select_type        | table     | type   | possible_keys | key  | key_len | ref  | rows   | Extra       |
+----+--------------------+-----------+--------+---------------+------+---------+------+--------+-------------+
|  1 | PRIMARY            | ag_master | ALL    | NULL          | NULL | NULL    | NULL | 177266 | Using where |
|  2 | DEPENDENT SUBQUERY | tmp       | system | NULL          | NULL | NULL    | NULL |      1 |             |
+----+--------------------+-----------+--------+---------------+------+---------+------+--------+-------------+
2 rows in set (0.00 sec)
</code>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage