Это немного странно. Я выполняю итерацию через довольно большую базу данных, используя запрос, который проверяет наличие определенных элементов. запуск этого запроса в базе данных без подсказки занимает около 137 секунд, но с подсказкой он опускается до 0 (что предпочтительнее obv). При его использовании с помощью PHPMongoDB подсказка не работает
$collection->find($params)->hint(array("responses" => 1))->count();
и профилирование запросов я получаю это:
{ "ц": ISODate ("2012-05-08T10: 11: 24.682Z"), " op ":" command "," ns ": " ey_gsat. $ cmd "," command ": {" count ":" survey_answers "," query ": { " answers.93 ": {" $ exists ": true}, "answers.96": {"$ exists": true}, "answers.99": {"$ exists": true}, "answers.102": { "$ exists": true}, "response.105": {"$ exists": true}, "answers.108": {"$ exists": true}, "r esponses.111 ": {" $ exists " : true}," answers.114 ": {" $ exists ": true}," answers.117 ": { " $ exists ": true}," answers.120 ": {" $ exists ": true}, " answers.1 ": {" $ exists ": true}}}," ntoreturn ": 1, " responseLength ": 48," millis ": 137," client ":„127.0.0.1“,„пользователь“ :„“}
Там нет никаких признаков запроса на самом деле с помощью индекса при запуске с помощью PHP. У меня есть довольно много запросов, подобных этому на этом сайте, поэтому 137 миллисекунд все складываются, поэтому я и хочу их оптимизировать. какие идеи могут быть неправильными?
Все, что я могу сказать, это *** новая технология *** – Petah
PHP-драйвер с легкостью отбрасывает намек, работает ли это в оболочке? – kristina
Я дважды проверял все сценарии, и, как подсказка, похоже, ускоряет обычный запрос поиска, всякий раз, когда я добавляю счет, он игнорирует индексы. что желаемое поведение? есть ли способ использовать индексы для ускорения моих вычислений? –