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() к каждому из них.

Но с помощью объединений вы получите много дублированных данных, и вам нужно будет извлечь данные из них самостоятельно. Не лучшее решение, да.

Я не знаю, какой из них будет лучше для вас, но лучший способ добиться большей производительности - это получить индекс использования в ваших таблицах и кеше.

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