对于大型数据集,MongoDB PHP在方法内计数$非常慢

时间:2013-10-31 01:22:10

标签: php mongodb memory-management count execution-time

大家好我有以下方法在mongodb中的多边形内进行计数:

public function countWithinPolygon($polygon, $tags = array())
        {
            // var_dump($polygon);

            // var_dump($polygon->getPoints());exit();
            $query = array(
                'point' => array(
                    '$within' => array(
                        '$polygon' => $polygon->getPoints()->first()->toArray(true)
                    )
                )
            );

            if($tags)
            {
                $query['tags'] = array(
                    '$all' => $tags
                );
            }

            return parent::count($query);
        }

对于一些包含少量数据的查询,这是可以的。在包含4000多个调用的较大数据集上,执行时间非常可悲,可能需要数小时。平均而言,执行需要三个小时。有关更好的写入方式的想法或提示,以节省时间并优化此查询吗?

1 个答案:

答案 0 :(得分:0)

通过确保索引如db.polygon.ensureIndex({'GeoJSON.geometry':'2dsphere'});

来解决问题