MySQL: много соединений или дополнительный внешний ключ? - PullRequest
1 голос
/ 16 февраля 2011

У меня следующая структура таблицы:

CREATE TABLE pilot_groups (
id INT PK,
name VARCHAR(50),
....
);

CREATE TABLE pilot_group_leaders (
id INT PK,
pilot_group_id INT FK,
name VARCHAR(50),
address TEXT,
....
);

CREATE TABLE members (
id INT PK,
pilot_group_leader_id INT FK,
country_id INT FK,
type VARCHAR(50),
name VARCHAR(50),
....
);

CREATE TABLE farms (
id INT PK,
member_id INT FK,
....
);

Поэтому я должен создать отчет и показать все фермы , сгруппированные по pilot_group .Чтобы сделать это с использованием текущей структуры, мне нужно сделать 3 объединения, которые, на мой взгляд, не очень оптимизированы и эффективны.Я думал о размещении дополнительного внешнего ключа в таблице фермы , но, таким образом, у меня будет повторение.Цель веб-сайта / приложения будет в основном для подготовки отчетов и ввода данных.Какой подход может быть лучше?

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

Полное удаление ключей 'id' и использование естественных первичных ключей может сильно помочь.Но потом, сказав, что это будет стоить мне кармы: -)

3 голосов
/ 16 февраля 2011

Придерживайтесь текущей версии, не дублируйте внешние ключи.

У вас должно получиться немного с индексами в таблицах.

Не исправляйте, если он не сломался. У вас действительно есть проблемы с производительностью, или вы их ожидаете?

...