Forum Webscript.Ru
Общие => Базы данных => Тема начата: YA от 18 Марта 2002, 02:56:44
-
Есть такая таблица-связка:
CREATE TABLE `table` (`1` SMALLINT(5) UNSIGNED NOT NULL, `2` SMALLINT(4) UNSIGNED NOT NULL, PRIMARY KEY (`1`, `2`));
Функция у нее только одна: она разрешает связь "многие-ко-многим". Оба поля содержат первичные ключи двух других таблиц.
Вопрос такой: есть ли смысл добавить в эту таблицу-связку поле
"`0` MEDIUMINT(7) UNSIGNED AUTO_INCREMENT", сделать его первичным ключем и включить в индекс все три поля? Может ли это ускорить работу или наоборот? Подразумевается большое количество селектов, использующих связанные таблицы.
-
Может ли это ускорить работу или наоборот?
Все зависит от того, какие у тебя будут select-ы. В этой таблице у тебя оба поля проиндексированны (первичным ключом являются) и введение еще одного поля только ради того, что бы еще и по нему проиндексировать это будет громоздко.
Другое дело, если тебе введение этого поля поможет упростить select-ы.
А насчет скорости и использования индексов, то используй
EXPLAIN SELECT для того, что бы посмотреть какие индексы используются и тестовый select-ы, что бы сравнить скорость выборки.
-
Благодарю, это и хотел услышать.
Просто где-то уведел настоятельную рекомендацию делать ТАК ВСЕГДА и усомнился (в своем здоровье :) )