Я знаю, что следующие запросы возвращают то же самое:
SELECT `cimgs`.*
FROM `cimgs`
INNER JOIN `cimgs_tags` ON `cimgs_tags`.`cimg_id` = `cimgs`.`id`
WHERE `cimgs_tags`.`tag_id` IN (1, 2, 3, 4, 5) AND (cimgs.id != 1)
SELECT `cimgs`.*
FROM `cimgs_tags`
INNER JOIN `cimgs` ON `cimgs`.`id` = `cimgs_tags`.`cimg_id`
WHERE `cimgs_tags`.`tag_id` IN (1, 2, 3, 4, 5) AND (cimgs.id != 1)
Но, на первый взгляд, я бы сказал, что первый дублирует таблицу cimgs
для каждого тега перед проверкой условий, когда второй проверяет условия и затем присоединяется к соответствующим таблицам ...
Хотя я не знаю, обнаружит ли MySQL и оптимизирует ли это автоматически, и эти два запроса имеют одинаковую производительность?