เพิ่มประสิทธิภาพ count() ด้วย Index
ใช้ ensureIndex() (หรือ createIndex() ในเวอร์ชันใหม่) สร้าง Index บน Field ที่ Query บ่อย เพื่อเพิ่มความเร็วของ count()
สร้างข้อมูลตัวอย่าง
> db.countPerformanceDemo.insertOne({"StudentName":"John","StudentCountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ebcf82f684a30fbdfd55f") }
> db.countPerformanceDemo.insertOne({"StudentName":"Mike","StudentCountryName":"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ebd042f684a30fbdfd560") }
> db.countPerformanceDemo.insertOne({"StudentName":"David","StudentCountryName":"AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ebd112f684a30fbdfd561") }
> db.countPerformanceDemo.insertOne({"StudentName":"Carol","StudentCountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ebd1a2f684a30fbdfd562") }
> db.countPerformanceDemo.insertOne({"StudentName":"Bob","StudentCountryName":"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ebd212f684a30fbdfd563") }
> db.countPerformanceDemo.insertOne({"StudentName":"David","StudentCountryName":"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ebd9a2f684a30fbdfd564") }
> db.countPerformanceDemo.insertOne({"StudentName":"David","StudentCountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c8ebd9e2f684a30fbdfd565") }
สร้าง Index บน StudentName
> db.countPerformanceDemo.ensureIndex({"StudentName":1});
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
นับจำนวน Document ที่ StudentName = "David"
> db.countPerformanceDemo.find({"StudentName":"David"}).count();
3
Index ช่วยให้ Query และ Count ทำงานเร็วขึ้นอย่างมาก โดยเฉพาะข้อมูลจำนวนมาก