PHP MongoDB:选择了错误的索引

时间:2017-10-31 10:15:38

标签: php mongodb

我有一个名为"记录"拥有数以千万计的文件。它有以下索引:

{
        "v" : 2,
        "key" : {
            "added_on" : -1,
            "instance" : 1,
            "invisible" : -1,
            "reviewed" : -1
        },
        "name" : "added_on_index",
        "ns" : "test.records"
    },

我正在尝试执行以下功能,该功能会尝试确定未审核的最旧记录。

$collection = $this->mongo->getCollection('records');
$cursor = $collection->find(array('instance' => $instance, 'reviewed' => false), array('added_on' => 1))->sort(array('added_on' => 1))->limit(1);

我可能错了,但我在书中读到了我已经学会了MongoDB这应该有用 - 在进行排序时使用排序字段作为索引的第一个字段。

但是,选择不同的索引作为获胜计划:

[winningPlan] => Array
                (
                    [stage] => PROJECTION
                    [transformBy] => Array
                        (
                            [added_on] => 1
                        )

                    [inputStage] => Array
                        (
                            [stage] => SORT
                            [sortPattern] => Array
                                (
                                    [added_on] => 1
                                )

                            [limitAmount] => 1
                            [inputStage] => Array
                                (
                                    [stage] => SORT_KEY_GENERATOR
                                    [inputStage] => Array
                                        (
                                            [stage] => FETCH
                                            [inputStage] => Array
                                                (
                                                    [stage] => IXSCAN
                                                    [keyPattern] => Array
                                                        (
                                                            [instance] => 1
                                                            [invisible] => 1
                                                            [reviewed] => 1
                                                        )

                                                    [indexName] => module_record_retrieval
                                                    [isMultiKey] => 
                                                    [multiKeyPaths] => Array
                                                        (
                                                            [instance] => Array
                                                                (
                                                                )

                                                            [invisible] => Array
                                                                (
                                                                )

                                                            [reviewed] => Array
                                                                (
                                                                )

                                                        )

                                                    [isUnique] => 
                                                    [isSparse] => 
                                                    [isPartial] => 
                                                    [indexVersion] => 2
                                                    [direction] => forward
                                                    [indexBounds] => Array
                                                        (
                                                            [instance] => Array
                                                                (
                                                                    [0] => [ObjectId('58b28de67289ba94352c90bd'), ObjectId('58b28de67289ba94352c90bd')]
                                                                )

                                                            [invisible] => Array
                                                                (
                                                                    [0] => [MinKey, MaxKey]
                                                                )

                                                            [reviewed] => Array
                                                                (
                                                                    [0] => [false, false]
                                                                )

                                                        )

                                                )

                                        )

                                )

                        )

                )

当尝试向find函数添加提示(' added_on_index')时,即使是$ cursor-> explain()也会因为看起来很长时间而停滞不前。 任何帮助解决这个问题都将不胜感激。

0 个答案:

没有答案
相关问题