CROSS JOIN
генерирует много строк, если фильтрация отсутствует. По этой причине, это, как правило, не рекомендуется. Иногда это необходимо.
В вашем случае у вас есть добросовестных соединений. И вы должны научиться их использовать.
Например, для этого условия:
. . .
commonRelationshipParentName CROSS JOIN
common_relationship_defined
. . .
WHERE commonRelationshipParentName.parent = common_relationship_defined.parent
лучше записать как:
commonRelationshipParentName JOIN
common_relationship_defined
ON commonRelationshipParentName.parent = common_relationship_defined.parent
Почему это лучше? Он устанавливает связь между таблицами прямо рядом с тем местом, где таблицы определены в предложении JOIN
. В большинстве баз данных присутствует ON
, что помогает избежать случайного забывания условия.
При этом оптимизатор MySQL достаточно умен, чтобы превратить ваш синтаксис в JOIN
. Однако я настоятельно рекомендую вам изучить правильный, стандартный , читаемый JOIN
синтаксис. Затем вы можете узнать о внешних объединениях, что делает этот синтаксис более мощным.