MongoDB บทช่วยสอนการจัดทำดัชนี – ตัวอย่าง createIndex(), dropindex()

ดัชนีมีความสำคัญมากในทุกฐานข้อมูลและด้วย MongoDB มันไม่แตกต่างกัน ด้วยการใช้ Indexes ดำเนินการค้นหาใน MongoDB มีประสิทธิภาพมากขึ้น

หากคุณมีคอลเลกชันที่มีเอกสารหลายพันฉบับโดยไม่มีดัชนี แล้วคุณค้นหาเพื่อค้นหาเอกสารบางฉบับ ในกรณีนี้ MongoDB จะต้องสแกนทั้งคอลเลกชันเพื่อค้นหาเอกสาร แต่ถ้าคุณมีดัชนี MongoDB จะใช้ดัชนีเหล่านี้เพื่อจำกัดจำนวนเอกสารที่ต้องค้นหาในคอลเลกชัน

ดัชนีคือชุดข้อมูลพิเศษที่จัดเก็บส่วนหนึ่งของข้อมูลคอลเลกชัน เนื่องจากข้อมูลมีบางส่วน จึงอ่านข้อมูลนี้ได้ง่ายขึ้น ชุดบางส่วนนี้จะจัดเก็บค่าของฟิลด์เฉพาะหรือชุดของฟิลด์ที่เรียงลำดับตามค่าของฟิลด์

การทำความเข้าใจผลกระทบของดัชนี

แม้ว่าเราจะเห็นได้จากบทนำแล้วว่าดัชนีนั้นดีสำหรับการค้นหา แต่การมีดัชนีมากเกินไปอาจทำให้การดำเนินการอื่นๆ เช่น การดำเนินการแทรก การลบ และการอัปเดตช้าลง

หากมีการดำเนินการแทรก ลบ และอัปเดตเอกสารบ่อยครั้ง ดัชนีก็จะต้องมีการเปลี่ยนแปลงบ่อยครั้ง ซึ่งจะเป็นเพียงค่าใช้จ่ายเบ็ดเตล็ดสำหรับคอลเลกชันเท่านั้น

ตัวอย่างด้านล่างแสดงตัวอย่างว่าค่าฟิลด์ใดที่สามารถประกอบเป็นดัชนีในคอลเลกชันได้ ดัชนีอาจขึ้นอยู่กับฟิลด์เดียวในคอลเลกชัน หรืออาจขึ้นอยู่กับหลายฟิลด์ในคอลเลกชันก็ได้

ในตัวอย่างด้านล่าง Employeeid “1” และ EmployeeCode “AA” ถูกใช้เพื่อสร้างดัชนีเอกสารในคอลเลกชัน ดังนั้นเมื่อมีการค้นหาแบบสอบถาม ดัชนีเหล่านี้จะถูกนำมาใช้เพื่อค้นหาเอกสารที่ต้องการในคอลเลกชันอย่างรวดเร็วและมีประสิทธิภาพ

ดังนั้นแม้ว่าคำค้นหาจะขึ้นอยู่กับ EmployeeCode “AA” เอกสารนั้นก็จะถูกส่งกลับ

การทำความเข้าใจผลกระทบของดัชนี

วิธีการสร้างดัชนี: createIndex()

การสร้างดัชนีใน MongoDB ทำได้โดยใช้ “createIndex" วิธี.

ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มดัชนีลงในคอลเลกชัน สมมติว่าเรามีคอลเลกชัน Employee เดียวกันซึ่งมีชื่อฟิลด์เป็น “Employeeid” และ “EmployeeName”

สร้างดัชนี: createIndex()

db.Employee.createIndex({Employeeid:1})

คำอธิบายรหัส:

  1. โครงการ createIndex วิธีการใช้เพื่อสร้างดัชนีตาม “Employeeid” ของเอกสาร
  2. พารามิเตอร์ '1' บ่งชี้ว่าเมื่อมีการสร้างดัชนีด้วยค่าฟิลด์ "Employeeid" ควรเรียงลำดับจากน้อยไปหามาก โปรดทราบว่าสิ่งนี้แตกต่างจากฟิลด์ _id (ฟิลด์ id ใช้เพื่อระบุแต่ละเอกสารในคอลเลกชันโดยไม่ซ้ำกัน) ซึ่งสร้างขึ้นโดยอัตโนมัติในคอลเลกชันโดย MongoDB- ขณะนี้เอกสารจะถูกจัดเรียงตาม Employeeid ไม่ใช่ฟิลด์ _id

หากดำเนินการคำสั่งสำเร็จ จะแสดงผลลัพธ์ต่อไปนี้:

Output:

สร้างดัชนี: createIndex()

  1. numIndexesBefore: 1 ระบุจำนวนค่าของฟิลด์ (ฟิลด์จริงในคอลเลกชัน) ซึ่งมีอยู่ในดัชนีก่อนที่คำสั่งจะถูกรัน โปรดจำไว้ว่าแต่ละคอลเลกชันมีฟิลด์ _id ซึ่งจะนับเป็นค่าฟิลด์ของดัชนีด้วย เนื่องจากฟิลด์ดัชนี _id เป็นส่วนหนึ่งของคอลเลกชันเมื่อถูกสร้างขึ้นครั้งแรก ค่าของ numIndexesBefore คือ 1
  2. numIndexesAfter: 2 ระบุจำนวนค่าของฟิลด์ที่มีอยู่ในดัชนีหลังจากรันคำสั่ง
  3. ที่นี่เอาต์พุต “ตกลง: 1” ระบุว่าการดำเนินการสำเร็จ และดัชนีใหม่จะถูกเพิ่มลงในคอลเลกชัน

โค้ดด้านบนแสดงวิธีการสร้างดัชนีตามค่าฟิลด์เดียว แต่ยังสามารถสร้างดัชนีตามค่าฟิลด์หลายค่าได้

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีดำเนินการนี้

สร้างดัชนี: createIndex()

db.Employee.createIndex({Employeeid:1, EmployeeName:1])

คำอธิบายรหัส:

  • ขณะนี้เมธอด createIndex คำนึงถึงค่าฟิลด์หลายค่า ซึ่งจะทำให้ดัชนีถูกสร้างขึ้นตาม "Employeeid" และ "EmployeeName" Employeeid:1 และ EmployeeName:1 บ่งชี้ว่าควรสร้างดัชนีในค่าฟิลด์ 2 รายการนี้ โดยมี :1 ระบุว่าควรเรียงลำดับจากน้อยไปมาก

วิธีค้นหาดัชนี: getindexes()

ค้นหาดัชนีใน MongoDB ทำได้โดยใช้ “รับดัชนี” วิธี

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีดำเนินการนี้

ค้นหาดัชนี: getindexes()

db.Employee.getIndexes()

คำอธิบายรหัส:

  • เมธอด getIndexes ใช้เพื่อค้นหาดัชนีทั้งหมดในคอลเลกชัน

หากดำเนินการคำสั่งสำเร็จ จะแสดงผลลัพธ์ต่อไปนี้:

Output:

ค้นหาดัชนี: getindexes()

  • เอาต์พุตส่งคืนเอกสารซึ่งเพิ่งแสดงว่ามี 2 ดัชนีในคอลเลกชันซึ่งเป็นฟิลด์ _id และอีกอันคือฟิลด์รหัสพนักงาน :1 บ่งชี้ว่าค่าฟิลด์ในดัชนีถูกสร้างขึ้นจากน้อยไปหามาก

วิธีการวางดัชนี: dropindex()

การลบดัชนีใน MongoDB ทำได้โดยใช้วิธี dropIndex

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีดำเนินการนี้

วางดัชนี: dropindex()

db.Employee.dropIndex(Employeeid:1)

คำอธิบายรหัส:

  • วิธีการ dropIndex ใช้ค่าฟิลด์ที่จำเป็นซึ่งจำเป็นต้องลบออกจากดัชนี

หากดำเนินการคำสั่งสำเร็จ จะแสดงผลลัพธ์ต่อไปนี้:

Output:

วางดัชนี: dropindex()

  1. nIndexesWas: 3 ระบุจำนวนค่าของฟิลด์ที่มีอยู่ในดัชนีก่อนที่จะรันคำสั่ง โปรดจำไว้ว่าแต่ละคอลเลกชันมีฟิลด์ _id ซึ่งจะนับเป็นค่าฟิลด์ของดัชนีด้วย
  2. เอาท์พุต ok: 1 ระบุว่าการดำเนินการสำเร็จ และฟิลด์ “Employeeid” จะถูกลบออกจากดัชนี

หากต้องการลบดัชนีทั้งหมดในคอลเลกชันพร้อมกัน คุณสามารถใช้คำสั่ง dropIndexes

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีดำเนินการนี้

วางดัชนี: dropindex()

db.Employee.dropIndex()

คำอธิบายรหัส:

  • เมธอด dropIndexes จะปล่อยดัชนีทั้งหมดยกเว้นดัชนี _id

หากดำเนินการคำสั่งสำเร็จ จะแสดงผลลัพธ์ต่อไปนี้:

Output:

วางดัชนี: dropindex()

  1. nIndexesWas: 2 ระบุจำนวนค่าของฟิลด์ที่มีอยู่ในดัชนีก่อนที่จะรันคำสั่ง
  2. โปรดจำอีกครั้งว่าแต่ละคอลเลกชันมีฟิลด์ _id ซึ่งจะนับเป็นค่าฟิลด์ของดัชนีด้วย และจะไม่ถูกลบออกโดย MongoDB และนั่นคือสิ่งที่ข้อความนี้บ่งบอก
  3. เอาท์พุต ok: 1 ระบุว่าการดำเนินการสำเร็จ

สรุป

  • การกำหนดดัชนีเป็นสิ่งสำคัญสำหรับการค้นหาเอกสารในคอลเลคชันที่รวดเร็วและมีประสิทธิภาพ
  • สามารถสร้างดัชนีได้โดยใช้เมธอด createIndex ดัชนีสามารถสร้างขึ้นได้เพียงฟิลด์เดียวหรือหลายค่าฟิลด์
  • ดัชนีสามารถพบได้โดยใช้เมธอด getIndexes
  • ดัชนีสามารถลบออกได้โดยใช้ dropIndex สำหรับดัชนีเดี่ยวหรือ dropIndexes สำหรับการวางดัชนีทั้งหมด