0

PHPとmongodbを使用しています。mongodb 2.0.4 を使用して、20 ミリ秒を超えるすべてのシステム プロファイリングを有効にしました。小さなクエリごとに単純なページを読み込むと、システム プロファイルに同じクエリが 4 回、10 回、場合によっては 24 回記録されます。そのため、ページの読み込みが非常に遅くなります。なぜそれが起こっているのですか??

クエリは次のように単純にすることができます。

$c2 = $things->find();
        foreach($c2 as $doc) {
            // some code...
        }

ありがとう!!

編集:完全なコード:

<?php

$m = new Mongo();
$db = $m->selectDB("test");


function getAllData ($db) {

    $some = $db->some;

        $cursor = $some->find();


        $js = "function() {
        return ((";

        foreach ($cursor as $doc) {
            $js .= "this.idE == '" . $doc['_id'] .  "' || ";

        }
        $js = substr($js,0,-4);
        $js .= ")";
        $js .= ");}";

        $names = $db->names;
        $c2 = $names->find(array('$where' => $js));
        foreach($c2 as $doc) {
            echo $doc['name'];
        }

}

getAllData ($db);


?>
4

1 に答える 1

0

2 つのクエリのどちらが乗算されていますか?

コードの変更を開始し、何が起こるかを確認します。最初に行うことは、「foreach」を削除し、代わりに「getNext」を 1 つだけ実行して、クエリが呼び出される回数に影響するかどうかを確認することです。私の推測では、Mongo ドライバーがバッチで結果を取得する方法に関係があると思われます。クエリを実行すると、すべての行が一度にダウンロードされるのではなく、バッチでダウンロードされます。これらのバッチ フェッチが重複クエリとして表示される場合があります。バッチサイズを調整できる仕組みがあると思いますが、これが役立つかもしれません。また、最新のドライバーに更新すると役立つ場合があります。

于 2012-05-21T03:39:11.043 に答える