Как можно оптимизировать этот запрос MySQL

Учитывая следующую структуру таблицы

images                 data
 ------------------    ----------------------------------
| id    | filename |  | fromImageId | toImageId | result |
 ------------------    ----------------------------------

У меня есть следующий SELECTдля получения всех изображений .filename, которые не имеют записи в data(либо fromImageId, либо toImageId)

SELECT image.id, image.filename
FROM images image
WHERE NOT EXISTS(
    SELECT fromImageId, toImageId
    FROM data results
    WHERE fromImageId = image.id
        OR toImageId = image.id
) ORDER BY image.id

Как таблица dataдовольно большой (500 000+), этот запрос требует очень много времени для вычисления (около 10-15 секунд).

Я совершенно уверен, что здесь предстоит многое оптимизировать, но я не могу понять, что можно сделать для оптимизации запроса.

PS: images.id— это PRIMARY KEY, а fromImageIdи toImageIdFOREIGN KEYs on images.id

0
задан Florian Peschka 30 March 2012 в 14:33
поделиться