Codeigniter/Datamapper "where_related" вызывает слишком много запросов

У меня есть сопоставление между многими profiles а также categories, Этот запрос:

$profiles = new Profile();  
$profiles->where('foobar_flag',1);
$profiles->where_related($category);
$profiles->get();

Требуется почти 30 секунд для запуска, с около 1000 записей в этой таблице профилей. Существует также таблица категорий и таблица profile_categories. Я получаю ошеломляющие 4000 запросов за исполнение.

Как мне сделать это быстрее?

1 ответ

Если вы недовольны функцией в datamapper, либо найдите упрощенный способ сделать это, поскольку ваш запрос активной записи может быть слишком дорогостоящим, как вы говорите.

Всегда запускайте свой профилировщик:

$this->output->enable_profiler(TRUE);

Это даст вам истинное представление о том, что делается за кулисами. Оптимизируйте с этого момента. В противном случае нам нужно больше кода, чтобы продолжить, чтобы дать соответствующие ответы.

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