且預設會開啟會將pagination開啟,
假設我們有a、b、c、d、e五個table,a為主要的table,
yii為了計算分頁的總筆數,會產生類似以下的SQL query,
SELECT COUNT(DISTINCT `t`.`id`) FROM `a` `t` LEFT OUTER JOIN `b` `b` ON (`b`.`aId`=`a`.`id`) LEFT OUTER JOIN `c` `c` ON (`a`.`cId`=`c`.`id`) LEFT OUTER JOIN `d` `d` ON (`c`.`dId`=`d`.`id`) LEFT OUTER JOIN `e` `e` ON (`e`.`bId`=`b`.`id`)
其實我們只是需要查詢a table的資料筆數,
這時候我們可以透過totalItemCount 這個property來取代上述自動產生的SQL query,
例如
$dataProvider = new CActiveDataProvider('Event', array( 'totalItemCount' => A::model()->count() 'criteria' => $criteria, ));
如此就可以加快分頁讀取的速度
沒有留言:
張貼留言