Разница между объединением и предварительной выборкой в ​​DBIx::Class

Пожалуйста, подробно объясните разницу между join а также prefetch в DBIx::Class,

joins карты для JOIN в SQL, верно?

prefetch заставляет читать все данные из связанных таблиц, верно?

Но мне кажется, что в случае has_a связь с таблицей, присоединение и предварительная выборка этой таблицы делают одно и то же, добавляют SQL JOIN, Правильно? Есть ли разница между join а также prefetch за has_a отношения?

Поэтому, когда использовать либо (особенно для has_a отношения)?

1 ответ

Предварительная выборка является сахаром для join + select и заполняет кэш связанными результирующими объектами, поэтому при вызове метода доступа к отношениям SQL-запрос не запускается.

Другие вопросы по тегам