Разница между объединением и предварительной выборкой в DBIx::Class
Пожалуйста, подробно объясните разницу между join
а также prefetch
в DBIx::Class
,
joins
карты для JOIN
в SQL, верно?
prefetch
заставляет читать все данные из связанных таблиц, верно?
Но мне кажется, что в случае has_a
связь с таблицей, присоединение и предварительная выборка этой таблицы делают одно и то же, добавляют SQL JOIN
, Правильно? Есть ли разница между join
а также prefetch
за has_a
отношения?
Поэтому, когда использовать либо (особенно для has_a
отношения)?
1 ответ
Предварительная выборка является сахаром для join + select и заполняет кэш связанными результирующими объектами, поэтому при вызове метода доступа к отношениям SQL-запрос не запускается.