Codeigniter / Datamapper "where_related" вызывает слишком много запросов - PullRequest
2 голосов
/ 24 сентября 2011

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

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

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

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

1 Ответ

0 голосов
/ 18 ноября 2011

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

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

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

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

...