Добрый день. Есть ряд вопросов по оптимизации SELECT запросов, надеюсь на вашу помощь)
Имеется две таблицы: product (товары) и product_relation (сопутствующие товары). Связь - многие ко многим.
Какая схема будет более оптимальной?
CREATE TABLE `product_relation`(
`id` INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
`product_id` Int(11) NOT NULL,
`relation_id` Int(11) NOT NULL,
`is_del` ENUM("n", "y") NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
или
CREATE TABLE `product_relation`(
`product_id` Int(11) NOT NULL,
`relation_id` Int(11) NOT NULL,
`is_del` ENUM("n", "y") NOT NULL,
PRIMARY KEY (`product_id`,`relation_id`)
) ENGINE = InnoDB;
Какие индексы строить в том или ином случаем?
Нужен ли составной UNIQUE INDEX (`product_id`,`relation_id`) или INDEX (`product_id`) для первой схемы?
Нужен ли FOREIGN KEY, если данные из таблиц никогда не удаляются (ставится пометка is_del = "y")?
Спасибо)