2014-01-30 2 views
2

쉘에서 mongodb 쿼리를 실행할 때 수 밀리 초 내에 결과가 설정됩니다. 그리고 내가 codeigniter에서 같은 쿼리를 실행할 때 나는 12 초 만에 결과를 얻는다.codeigniter mongodb 성능

쉘 스크립트

db.order.find({customer_email:/^[email protected]/}).explain() 

CodeIgniter의 스크립트

$orderData = $this->mongo_db->get_where('order', array('customer_email'=> new MongoRegex("/^[email protected]/i"))); 

결과를 가져 오는 속도를 최적화 할 수있는 솔루션이 있습니까? 전체 기록은 7272699이며 [email protected]을 찾아야합니다.

답변

2

먼저, customer_email에 색인을 설정해야합니다. 둘째, 인덱스를 사용하는 MongoRegex에 i 플래그를 제거하려고 : 나는 그것이 성능을 향상 플래그를 제거한 후,

$orderData = $this->mongo_db->get_where('order', array('customer_email'=> new MongoRegex("/^[email protected]/"))); 
+0

안녕 STEYX을하지만 난 대소 문자를 구분 데이터를 검색해야합니다. –

+0

그런 다음 쿼리에서 인덱스를 사용할 수 없습니다. 또 다른 해결책은 mongo에 쓰기 전에 항상 customer_email을 소문자로 만드는 것입니다. – Steyx

+0

감사합니다. 그것은 효과가 있었다. –