que je fais ceci:supprimer prendre très longtemps! mysql
delete calibration_2009 from
calibration_2009 join batchinfo_2009
on calibration_2009.rowid = batchinfo_2009.rowid
where batchinfo_2009.reporttime like '%2010%';
les deux tables ont environ 500k lignes de données je soupçonne que 250k correspondent aux critères à supprimer
jusqu'à présent, il a fonctionné pendant 2 heures !!! y a-t-il quelque chose qui ne va pas?
dev.mysql.com dit que je dois faire ceci:
If you are deleting many rows from a large table, you may exceed the lock table size for an InnoDB table. To avoid this problem, or simply to minimize the time that the table remains locked, the following strategy (which does not use DELETE at all) might be helpful:
Select the rows not to be deleted into an empty table that has the same structure as the original table:
INSERT INTO t_copy SELECT * FROM t WHERE ... ;
Use RENAME TABLE to atomically move the original table out of the way and rename the copy to the original name:
RENAME TABLE t TO t_old, t_copy TO t;
Drop the original table:
DROP TABLE t_old;
comment je ne le fais avec ma déclaration actuelle?
C'est probablement juste parce que 250 + k est beaucoup de données à supprimer, et prendrait un certain temps –
duplication possible de [moyen le plus rapide de supprimer des données de mysql] (http://stackoverflow.com/questions/2884385/quickest- way-of-deleting-data-from-mysql) –
Généralement, je fais un compte de sélection (*) à partir de ... avant d'exécuter une suppression réelle pour m'assurer que je reçois au moins la bonne quantité de lignes et un select *. .. limite 100 (ou plus) pour s'assurer que les lignes semblent correctes. Si vous exécutez cette opération dans une transaction, vous pouvez envisager d'abandonner et de vérifier que vous supprimez réellement ce que vous attendiez. –