title: Approximately how long should it take to delete 10m records from an MySQL InnoDB table with 30m records?
body: <p>I am deleting approximately 1/3 of the records in a table using the query:</p>
  
  <pre><code>DELETE FROM `abc` LIMIT 10680000;
  </code></pre>
  
  <p>The query appears in the processlist with the state "updating". There are 30m records in total. The table has 5 columns and two indexes, and when dumped to SQL the file about 9GB.</p>
  
  <p>This is the only database and table in MySQL.</p>
  
  <p>This is running on a machine with 2GB of memory, a 3 GHz quad-core processor and a fast SAS disk. MySQL is not performing any reads or writes other than this <code>DELETE</code> operation. No other "heavy" processes are running on the machine.</p>
  
  <p>This query has been running for more than 2 hours -- how long can I expect it to take?</p>
  
  <p>Thanks for the help! I'm pretty new to MySQL, so any tidbits about what's happening "under the hood" while running this query are definitely appreciated.</p>
  
  <p>Let me know if I can provide any other information that would be pertinent.</p>
  
  <p><strong>Update:</strong> I just ran a <code>COUNT(*)</code>, and in 2 hours, it's only deleted 200k records. I think I'm going to take Joe Enos' advice and see how well inserting the data into a new table and dropping the previous table performs.</p>
  
  <p><strong>Update 2:</strong> Sorry, I actually <em>misread</em> the number. In 2 hours, it's not deleted <strong>anything</strong>. I'm confused. Any suggestions?</p>
  
  <p><strong>Update 3:</strong> I ended up using <code>mysqldump</code> with <code>--where "true LIMIT 10680000,31622302"</code> and then importing the data into a new table. I then deleted the old table and renamed the new one. This took just over half an hour.</p>