triumvirat
говорю же, добавь ещё один индекс на id_tag и всё будет ок
ps: у тебя план выборки выглядит так: "выбрать все статьи, перемножить на записи из таблицы связей тегов, для которых тег искомый и статья соответствующая".
а нужно так: "выбрать все искомые теги из таблицы связей и перемножить на таблицу статей"
соответственно в виде запроса:
[sql]
SELECT * FROM `article_tag` `at` INNER JOIN `article` `a` ON `a`.`id` = `at`.`id_article` WHERE `at`.`id_tag` = 666
[/sql]
говорю же, добавь ещё один индекс на id_tag и всё будет ок

ps: у тебя план выборки выглядит так: "выбрать все статьи, перемножить на записи из таблицы связей тегов, для которых тег искомый и статья соответствующая".
а нужно так: "выбрать все искомые теги из таблицы связей и перемножить на таблицу статей"
соответственно в виде запроса:
[sql]
SELECT * FROM `article_tag` `at` INNER JOIN `article` `a` ON `a`.`id` = `at`.`id_article` WHERE `at`.`id_tag` = 666
[/sql]
разница только в семантике. по факту ничего не изменитсяподойдет не UNIQUE, а PRIMARY
"здравый смысл". пара "статья-тег" не может дублироваться, поэтому делаем их уникальными.Ну а тогда какой смысл в моей таблице UNIQUE?