Наличие OR
в вашем WHERE
делает MySQL неохотно (если не полностью отказывается) использовать индексы в ваших полях user_id
и / или person_id
(если есть - отображение CREATE TABLE
будетуказать, если был).
Если вы можете добавить индексы (или изменить существующие, так как я имею в виду составные индексы), я, вероятно, добавлю два:
ALTER TABLE compatibility
ADD INDEX user_id_updated_at (user_id, updated_at),
ADD INDEX persona_id_updated_at (person_id, updated_at);
Соответственно, при условии, что строки равны DELETE
не должно быть удалено атомарно (т.е. происходит в одно и то же время).
DELETE FROM compatibility WHERE user_id = 193 AND updated_at < '2010-12-02 22:55:33';
DELETE FROM compatibility WHERE person_id = 193 AND updated_at < '2010-12-02 22:55:33';