-----Original Message-----
From: Dan Buettner [mailto:[EMAIL PROTECTED] 
Sent: Friday, July 07, 2006 15:48
To: Jacob, Raymond A Jr
Cc: mysql@lists.mysql.com
Subject: Re: How does one speed up delete.

Raymond, I would expect that adding an index on 'cid' column in your
'sidtemp' table would help quite a bit.

Out of curiousity, why use a temp table in this situation?  Why not

Dan:
   I had erroneously assumed that the delete would delete rows from data
and event. 
DELETE data
FROM data, event
WHERE data.cid = event.cid
AND event.timestamp < "2006-05-01"

I just stopped my previous query. I am running the above now.

I used a temporary table because I thought I only needed the table to
hold the events.cid's temporarily that
I wished to delete from the data table. Can you tell when I should use
temporary tables.

Below I believe command below demonstrates that an index exists on data
and event?

mysql> show index from data;
+-------+------------+----------+--------------+-------------+----------
-+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation

| | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+----------
-+-------------+----------+--------+------+------------+---------+
| data  |          0 | PRIMARY  |            1 | sid         | A
|           3 |     NULL | NULL   |      | BTREE      |         |
| data  |          0 | PRIMARY  |            2 | cid         | A
|     9678480 |     NULL | NULL   |      | BTREE      |         |
+-------+------------+----------+--------------+-------------+----------
-+-------------+----------+--------+------+------------+---------+
2 rows in set (0.00 sec)

mysql> show index from event;
+-------+------------+----------+--------------+-------------+----------
-+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation

| | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+-------+------------+----------+--------------+-------------+----------
-+-------------+----------+--------+------+------------+---------+
| event |          0 | PRIMARY  |            1 | sid         | A
|        NULL |     NULL | NULL   |      | BTREE      |         |
| event |          0 | PRIMARY  |            2 | cid         | A
|    14389173 |     NULL | NULL   |      | BTREE      |         |
| event |          1 | sig      |            1 | signature   | A
|        NULL |     NULL | NULL   |      | BTREE      |         |
| event |          1 | time     |            1 | timestamp   | A
|        NULL |     NULL | NULL   |      | BTREE      |         |
+-------+------------+----------+--------------+-------------+----------
-+-------------+----------+--------+------+------------+---------+
4 rows in set (0.00 sec)

Thank you,
 raymond
On 7/7/06, Jacob, Raymond A Jr <[EMAIL PROTECTED]> wrote:
> Env: Freebsd 6.0
> MySql 4.1.18
> Mem: 1GB(?) can not tell without rebooting Disk Avail: 4GB
>
> Problem: the table data is 4.5GB.
> I created a temporary table sidtemp in the database snort by typing:
>
> CREATE TEMPORARY TABLE sidtemp
> SELECT cid FROM event
> WHERE timestamp < '2006-05-01';
>
> Query OK, 7501376 rows affected (36.38 sec)
> Records: 7501376 Duplicates: 0 Warnings: 0
>
> Next I want to delete all rows from the table data when data.cid = 
> sidtemp.cid So I started the following command on Jul 5 at 16:44 GMT:
> DELETE data FROM data JOIN sidtemp ON data.cid = sidtemp.cid
>
> It is now Jul 7 19:56 GMT. I had forgotten how long it takes to run 
> this delete  command as I recall it takes 15-20days on just one 
> database. I have
> two(2)
> Databases with the same schema. The databases are live now and Usually

> without executing this delete mysql  uses between 0-10% Of the CPU. 
> The delete is causing the mysql to use between 98-99% of the
>
> CPU.
>
> Any ideas on what I can do to speed up the Delete?
>
> Thank you
> Raymond
>
>

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

Reply via email to