CakePHP присоединяется к содержанию
Я разрабатываю с помощью CakePHP (2.4.7), и я использую опцию содержать.
У меня есть несколько операторов поиска с 15 таблицами / моделями внутри содержащегося массива, и мой журнал запросов показывает около 60-100 запросов.
Должен ли я использовать соединения вместо содержимого из-за лучшей производительности?
Мой сайт требует высоких стандартов производительности.
И возможно ли автоматическое объединение на основе моделей связывания, таких как встраиваемые, или мне нужно настроить объединения вручную, например:
Пример:
$this->Message->find('all', array(
'joins' => array(
array(
'table' => 'users',
'alias' => 'UserJoin',
'type' => 'INNER',
'conditions' => array(
'UserJoin.id = Message.from'
)
)
),
'conditions' => array(
'Message.to' => 4
),
'fields' => array('UserJoin.*', 'Message.*'),
'order' => 'Message.datetime DESC'
));
Укажи мне правильный путь для достижения моей цели.
1 ответ
Контейнер требует больших системных ресурсов для создания данных из таблиц, поскольку он выполняет много запросов и применяет функцию Hash::nest() к каждому из них.
Но с помощью объединений вы получите много дублированных данных, и вам нужно будет извлечь данные из них самостоятельно. Не лучшее решение, да.
Я не знаю, какой из них будет лучше для вас, но лучший способ добиться большей производительности - это получить индекс использования в ваших таблицах и кеше.