Further reason DELETE FROM on a Merge Table is so inefficient is this:

DELETE FROM tbl without a WHERE clause on a MyISAM Table is mapped internally 
to TRUNCATE TABLE, which would be instatntaneous


DELETE FROM tbl WHERE 1=1 would clearly make even a MyISAM table terribly 
ineffeicient as it must evaluate 1=1 on every row in the table.

A Mrg_MyISAM (Merge) Table must always do some kind of WHERE evaluation since a 
query issued against a Merge Table must be evaluated on each of the mapped 
MyISAM tables.

It would be nice if the Mrg_MyISAM engine were coded to map a 'DELETE FROM' 
without a WHERE clause to a DELETE FROM on all underlying MyISAM tables.


----- Original Message ----
From: Chris <[EMAIL PROTECTED]>
To: mos <[EMAIL PROTECTED]>
Cc: mysql@lists.mysql.com
Sent: Tuesday, November 20, 2007 11:13:58 PM
Subject: Re: Why is Delete slow on a Merge Table?

mos wrote:
> I have a merge table that is a union of 20 1 million row tables. Select 
> rows from it is quite fast. However if I want to delete all the rows as in:
> 
> delete from MyMergeTable;
> 
> it takes just over 3 minutes. I could execute 20 separate delete 
> statements for each of the 20 tables and it would complete in under a 
> second. Why is a Delete on a merge table so inefficient? It appears it 
> is deleting all the rows individually.

That's the way delete works - it deletes the rows one at a time. It also 
has to update the indexes as it goes to remove links between the data & 
index.

http://dev.mysql.com/doc/refman/5.0/en/delete.html
http://dev.mysql.com/doc/refman/5.0/en/delete-speed.html

If you're clearing the whole table, use truncate as Jerry suggested.

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]


      
____________________________________________________________________________________
Get easy, one-click access to your favorites. 
Make Yahoo! your homepage.
http://www.yahoo.com/r/hs 

Reply via email to