1

Zend_Paginatorを使い始めましたが、すべて正常に機能しますが、読み込み時間を遅くするクエリがもう1つあることに気付きました。追加のクエリ:

SELECT COUNT(1) AS `zend_paginator_row_count` FROM `content`

通常のクエリ:

SELECT `content`.`id`, `content`.`name` FROM `content` LIMIT 2

PHP:

$adapter = new Zend_Paginator_Adapter_DbSelect($table->select()->from($table, array('id', 'name')));
$paginator = new Zend_Paginator($adapter);

2つのクエリを1つにマージできますか(パフォーマンスを向上させるため)?

4

2 に答える 2

1

選択したテーブルの1つ以上のintベースの列にインデックスがあることを確認してください。したがって、カウントクエリはパフォーマンスに大きな影響を与えません。カウントを提供するために使用できますsetRowCount()(ある場合)。

http://framework.zend.com/manual/en/zend.paginator.usage.htmlから:

注:特定のクエリの一致するすべての行を選択する代わりに、DbSelectおよびDbTableSelectアダプターは、現在のページを表示するために必要な最小限のデータのみを取得します。このため、2番目のクエリが動的に生成され、一致する行の総数が決定されます。ただし、カウントまたはカウントクエリを自分で直接指定することは可能です。詳細については、DbSelectアダプターのsetRowCount()メソッドを参照してください。

于 2010-04-07T13:11:38.057 に答える
0

2つをマージしても、パフォーマンスが大幅に向上することはありません。実際のselectコンテンツには、(データベース内のテーブル全体のサブセットを取得しようとしているため)limitステートメントが含まれており、カウントではデータベース内のすべての行をカウントする必要があります。このように行われる理由は、単にカウントを取得するために非常に大きなデータセットを選択する必要がないようにするためです。

于 2010-04-07T13:43:55.123 に答える