Приветсвую!
Работаю с Yii немного, наткнулся на несколько лишних запросов. Итак по порядку
В контроллере есть вызов:
$criteria=new CDbCriteria(array(
'condition'=>'status IN ('.Item::STATUS_PUBLISHED.','.Item::STATUS_PUBLISHED_USER.')',
'order'=>'create_date DESC',
'with'=>array('commentCount'),
));
$dataProvider=new CActiveDataProvider('Item', array(
'pagination'=>array(
'pageSize'=>Yii::app()->params->postsPerPage,
),
'criteria'=>$criteria,
));
Соответственно дальше переменная $dataProvider применяется в виджите - СListView.
Для оптимизации и тестирования в конце страницы выводятся данный о запросах к БД, вот так:
<?php
$dbStats = Yii::app()->db->getStats();
echo 'Выполнено запросов: '.$dbStats[0].' (за '.round($dbStats[1], 5).' сек)';
?>
И вот собственно в чем вопрос, общее количество запросов показывается - 7, насколько я понимаю, в моем примере, класс CActiveDataProvider - это один запрос типа "SELECT…FROM…LEFT JOIN…" - это один запрос, откуда еще 6?
При вызове класса CActiveDataProvider, использую конструкцию with(‘commentCount’), вот кусок кода модели:
public function relations() {
return array(
'commentCount' => array(self::STAT, 'Comment', 'item_id', 'condition'=>'status='.Comment::STATUS_APPROVED),
);
}
Кто знает от куда и какие запросы формируются? В модели, отношение AR классов определенно как STAT, может в этом все дело? Но даже если на это отдать 3 запроса, то никак не итоговых 7? Еще пару вопросов можно одать на считование information_schema из БД. Но все равно в итоге не 7 запросов…
Кто знает что то про мою ситуацию или просто про запросы Yii, прошу отписать или ткнуть в документацию. Поиском пользовался, но безрезультатно.
Т.к. yii позиционируется как фреймверк для высоконагруженных приложений, тут каждый запрос должен быть на счету.