Лишнии запросы, пару вопросов по AR

Приветсвую!

Работаю с 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 позиционируется как фреймверк для высоконагруженных приложений, тут каждый запрос должен быть на счету.

Покажи что за запросы. А вообще часть запросов - запросы, с помощью которых AR получает информацию о таблице.

Их можно кешировать.

Так запросы, те которые рабочии 3 штуки:




SELECT COUNT(DISTINCT `t`.`id`) FROM `fldzr_item` `t`  WHERE (status IN (2,4))


SELECT `t`.`id` AS `t0_c0`, `t`.`status` AS `t0_c1`,

`t`.`votes` AS `t0_c2`, `t`.`res_vote` AS `t0_c3`, `t`.`title` AS `t0_c4`,

`t`.`content` AS `t0_c5`, `t`.`pre_view` AS `t0_c6`, `t`.`image` AS

`t0_c7`, `t`.`create_date` AS `t0_c8`, `t`.`update_date` AS `t0_c9`,

`t`.`link` AS `t0_c10` FROM `fldzr_item` `t`  WHERE (status IN (2,4)) ORDER

BY create_date DESC LIMIT 10


SELECT `item_id` AS `c`, COUNT(*) AS `s` FROM `fldzr_comment`

WHERE (status=2) AND (`fldzr_comment`.`item_id` IN (12, 11, 10, 9, 8, 7, 6,

5, 4, 3)) GROUP BY `item_id`



А вот те который Yii сам подключает:




SHOW COLUMNS FROM `fldzr_item`

SHOW CREATE TABLE `fldzr_item`




SHOW COLUMNS FROM `fldzr_comment`

SHOW CREATE TABLE `fldzr_comment`



Эти запросы уберутся с включением кеширования? А зачем запрос CREATE делается?

Эти запросы убирутся. Насчет CREATE, точно не знаю, возможно в нем есть какая-то доп. информация.

P.S. почитай http://www.yiiframework.com/doc/guide/ru/topics.performance, строчка "Если используется Active Record, можно включить кэширование структуры базы данных. Это можно сделать, установив в настройках свойству CDbConnection::schemaCachingDuration значение, большее 0."