I changed it to delete one row at a time and it's taking 3 minutes.

On Wed, Apr 24, 2013 at 6:52 PM, Larry Martell <larry.mart...@gmail.com> wrote:
> That is the entire sql statement - I didn't think I needed to list the
> 1500 ints that are in the in clause.
>
> Also want to mention that I ran explain on it, and it is using the
> index on event_id.
>
> On Wed, Apr 24, 2013 at 6:49 PM, Michael Dykman <mdyk...@gmail.com> wrote:
>> You would have to show us the whole sql statement but often 'in' clauses can
>> be refactored into equivalent joins which tend to improve performance
>> tremendously.
>>
>>  - michael dykman
>>
>>
>> On Wed, Apr 24, 2013 at 8:19 PM, Larry Martell <larry.mart...@gmail.com>
>> wrote:
>>>
>>> I have a table that has 2.5 million rows and 9 columns that are all
>>> int except for 2 varchar(255) - i.e. not that big of a table. I am
>>> executing a delete from that table like this:
>>>
>>> delete from cdsem_event_message_idx where event_id in (....)
>>>
>>> The in clause has around 1,500 items in it. event_id is an int, and
>>> there is an index on event_id. This statement is taking 1 hour and 5
>>> minutes to run. There is nothing else hitting the database at that
>>> time, and the machine it's running on is 97% idle and has plenty of
>>> free memory. This seems extremely excessive to me. I would guess it's
>>> because of the in clause. Is there some better way to do a delete like
>>> this?
>>>
>>> --
>>> MySQL General Mailing List
>>> For list archives: http://lists.mysql.com/mysql
>>> To unsubscribe:    http://lists.mysql.com/mysql
>>>
>>
>>
>>
>> --
>>  - michael dykman
>>  - mdyk...@gmail.com
>>
>>  May the Source be with you.

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

Reply via email to