2012-04-23 4 views
0

データベースから取得したときに結果が1kマークの周りにあれば、何か問題が発生しました。Doctrine 1.2 Pager - データベースから要求されたデータの量を減らしますか?

Doctrine(v1.2)_Pagerをページあたり25個に制限して使用している場合。データベースから取り出されたデータの量をわずか25に減らしますか?それでも、全体のセットを取得してからそれを減らしていますか?

は、次のような実装:

$perPage = 25; 
$numPageLinks = 25; 

$pager = new Doctrine_Pager($q, $input->page, $perPage); 

$result = $pager->execute(array(), Doctrine::HYDRATE_ARRAY); 

$pagerRange = new Doctrine_Pager_Range_Sliding(
    array('chunk' => $numPageLinks), $pager 
); 

$pagerUrlBase = '...'; 

$pagerLayout = new Doctrine_Pager_Layout(
    $pager, $pagerRange, $pagerUrlBase); 

$pagerLayout->setTemplate('...'); 
$pagerLayout->setSelectedTemplate(
    '...' 
); 
$pagerLayout->setSeparatorTemplate('...'); 

$this->view->records = $result; 

答えて

2

はDoctrineのページャは唯一の25件のレコードを要求します。

Zend_Paginator_Arrayのように混乱させると、完全な配列を取り、設定に応じてトリミングします。

1

enable mysql query logをお勧めします。結果のログファイルをtailしてください。これにより、各要求に対して発行される正確な照会を確認することができます。 Mike B氏が述べたように、Doctrine_Pagerはページ制限のクエリを発行しますが、これは制限とオフセットの組み合わせになりますが、クエリログファイルのテーリングによって期待していない他のクエリが表示されることがあります。

たとえば、ログファイルをテールしているうちに、Doctrine unlinkのメソッドが重複していたことに驚きました。私はそれがDoctrineかSymfonyで重複削除クエリーを発行しているかどうかは分かっていないので、データベース/アプリケーションのパフォーマンスを向上させる独自のリンクを書きました。

関連する問題