Вы должны начать использовать формы Symfony. Вот документация https://symfony.com/doc/current/forms.html . Вначале все не так просто, но это определенно важно. Тогда вы сможете использовать EntityType
https://symfony.com/doc/current/reference/forms/types/entity.html
В MS Sql разные алгоритмы соединения будут использоваться в разных ситуациях в зависимости от таблиц (их размера, какого рода индексов и т. Д.). Я полагаю, что другие механизмы БД также используют различные алгоритмы.
Основные типы объединения, используемые г-жой Sql:
- Соединения вложенных циклов
- Объединение объединяет
- Hash join
. Подробнее о них вы можете прочитать на этой странице: Msdn - Расширенные концепции настройки запросов
Если вы получите SQL для отображения «плана выполнения» для ваших запросов, вы сможете увидеть, какой тип объединения используется в разных ситуациях.
Существуют разные алгоритмы, в зависимости от сервера БД, индексов и порядка данных (кластеризованный PK), независимо от того, объединяются ли вычисленные значения и т. Д.
Посмотрите на план запроса, который большинство систем SQL может создать для запроса, он должен дать вам представление о том, что он делает.
Это зависит от того, какую базу данных вы используете, к чему вы присоединяетесь (большой / маленький, в последовательности / случайный, индексированный / неиндексированный и т. Д.).
Например, SQL Сервер имеет несколько разных алгоритмов соединения; Соединение циклов, объединение объединений, объединение хешей. Какой из них используется, определяется оптимизатором при разработке плана выполнения. Иногда это приводит к неправильному суждению, и затем вы можете принудительно использовать определенный алгоритм объединения, используя подсказки о соединении.
Вам могут быть интересны следующие страницы MSDN:
http://msdn.microsoft.com/en-us/library/ ms191318.aspx (цикл)
http://msdn.microsoft.com/en-us/library/ms189313.aspx (хеш)
http://msdn.microsoft.com/ ru-ru / library / ms190967.aspx (объединить)
http://msdn.microsoft.com/en-us/library/ms173815.aspx (подсказки)
Вся теория множеств основывалась уже давно. Старайтесь не связывать слишком много таблиц за один раз, кажется, что ресурсы сканирования базы данных не совпадают. Индексы помогают с производительностью, посмотрите на некоторые сайты SQL и поиск по оптимизации запросов SQL, чтобы получить некоторое представление. В SQL Management Studio есть встроенная утилита для плана выполнения, которая часто интересна, особенно для больших сложных запросов.
В этом случае вы должны увидеть, как сохранять данные в b-дереве после того, как я думаю, вы поймете алгоритм JOIN.
Оптимизатор выберет (или должен) выбрать алгоритм быстрого соединения.
Однако есть два разных типа определения того, что быстро:
Если вы хотите вернуть все строки как можно быстрее, оптимизатор часто выбирает хеш-соединение или соединение слиянием. Если вы хотите вернуть первые несколько строк как можно быстрее, оптимизатор выберет соединение с вложенными циклами.
Он создает декартово произведение двух таблицы, а затем выбирает строки из него. Читайте книгу Корта о базах данных для того же.