ภาพรวมดัชนี

ส่วนนี้อธิบายการจัดทำดัชนีสำหรับ Firestore Enterprise Edition Firestore Enterprise Edition จะไม่สร้างดัชนีใดๆ โดยค่าเริ่มต้น หากต้องการลดค่าใช้จ่ายและปรับปรุงประสิทธิภาพของฐานข้อมูล ให้สร้างดัชนีสำหรับคำค้นหาที่ใช้บ่อยที่สุด

ดัชนีมีผลอย่างมากต่อประสิทธิภาพของฐานข้อมูล หากมีดัชนีสำหรับคำค้นหา ฐานข้อมูลจะแสดงผลลัพธ์ได้อย่างมีประสิทธิภาพโดยลดปริมาณข้อมูลที่ต้องสแกนและลดงานที่ต้องใช้ในการจัดเรียงผลลัพธ์ อย่างไรก็ตาม รายการดัชนีจะเพิ่มค่าใช้จ่ายในการจัดเก็บและปริมาณงานที่ทำระหว่างการดำเนินการเขียนในช่องที่จัดทำดัชนี

คำจำกัดความและโครงสร้างดัชนี

ดัชนีประกอบด้วยข้อมูลต่อไปนี้

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

นอกจากนี้ ดัชนียังเปิดใช้ตัวเลือกแบบ เบาบาง หรือ ไม่ซ้ำกัน ได้ด้วย

การจัดลำดับดัชนี

ลำดับและทิศทางการจัดเรียงของแต่ละช่องจะกำหนดดัชนีที่ไม่ซ้ำกัน ตัวอย่างเช่น ดัชนีต่อไปนี้เป็นดัชนี 2 รายการที่แตกต่างกันและใช้แทนกันไม่ได้

คอลเล็กชัน ช่อง
เมือง ประเทศ (จากน้อยไปมาก), ประชากร (จากมากไปน้อย)
เมือง ประชากร (จากมากไปน้อย), ประเทศ (จากน้อยไปมาก)

เมื่อสร้างดัชนีเพื่อรองรับคำค้นหา ให้รวมช่องตามลำดับเดียวกับคำค้นหา

ความหนาแน่นของดัชนี

โดยค่าเริ่มต้น รายการดัชนีจะจัดเก็บข้อมูลจากเอกสารทั้งหมดในคอลเล็กชัน ซึ่งเรียกว่าดัชนีที่ไม่เบาบาง ระบบจะเพิ่มรายการดัชนีสำหรับเอกสารไม่ว่าเอกสารจะมีช่องใดช่องหนึ่งที่ระบุไว้ในดัชนีหรือไม่ก็ตาม ระบบจะถือว่าช่องที่ไม่มีอยู่มีค่า NULL เมื่อสร้างรายการดัชนี หากต้องการเปลี่ยนลักษณะการทำงานนี้ คุณสามารถกำหนดดัชนีเป็นดัชนีแบบเบาบางได้

ดัชนีแบบเบาบาง

ดัชนีแบบเบาบางจะจัดทำดัชนีเฉพาะเอกสารในคอลเล็กชันที่มีค่า (รวมถึงค่า Null) สำหรับช่องที่จัดทำดัชนีอย่างน้อย 1 ช่อง ดัชนีแบบเบาบางช่วยลดค่าใช้จ่ายในการจัดเก็บและปรับปรุงประสิทธิภาพได้

ดัชนีที่ไม่ซ้ำกัน

ตั้งค่าตัวเลือกดัชนีที่ไม่ซ้ำกันเพื่อบังคับใช้ค่าที่ไม่ซ้ำกันสำหรับช่องที่จัดทำดัชนี สำหรับดัชนีในหลายช่อง ค่าแต่ละชุดต้องไม่ซ้ำกันในดัชนี ฐานข้อมูลจะปฏิเสธการดำเนินการอัปเดตและแทรกที่พยายามสร้างรายการดัชนีที่มีค่าซ้ำกัน หากข้อมูลในช่องที่จัดทำดัชนีมีค่าซ้ำกันและคุณพยายามสร้างดัชนีที่ไม่ซ้ำกัน การสร้างดัชนีจะล้มเหลวและแสดงข้อความแสดงข้อผิดพลาดในรายละเอียดการดำเนินการ

ช่องที่ไม่มีในดัชนีที่ไม่ซ้ำกัน

หากคุณแทรกเอกสารที่มีช่องที่ขาดหายไปสำหรับดัชนีที่ไม่ซ้ำกัน ดัชนีจะตั้งค่า null สำหรับช่องที่ขาดหายไป รายการดัชนีที่ได้ต้องไม่ซ้ำกัน ไม่เช่นนั้นการดำเนินการจะล้มเหลว

ตัวอย่างเช่น ดัชนีนี้

คอลเล็กชัน ช่องที่จัดทำดัชนี ขอบเขตการค้นหา
เมือง ชื่อ (จากน้อยไปมาก) คอลเล็กชัน

หากคุณเพิ่มเอกสาร {"abbreviation": "LA"} ลงในคอลเล็กชัน ดัชนีที่ไม่ซ้ำกัน จะสร้างรายการโดยตั้งค่า name เป็น null หากคุณพยายามเพิ่ม เอกสาร {"abbreviation": "NYC"} การดำเนินการจะล้มเหลวเนื่องจากรายการ ดัชนีที่ไม่ซ้ำกันที่ได้เหมือนกัน

ลักษณะการทำงานเดียวกันนี้ใช้กับดัชนีที่ไม่ซ้ำกันที่มีหลายช่อง เมื่อสร้างหรืออัปเดตเอกสาร ระบบจะตั้งค่าช่องที่จัดทำดัชนีที่ขาดหายไปเป็น null และรายการดัชนีที่ได้ต้องไม่ซ้ำกันในดัชนี

แก้ปัญหาข้อผิดพลาดในการสร้างดัชนี

คุณอาจพบข้อผิดพลาดในการสร้างดัชนีเมื่อจัดการดัชนี การดำเนินการจัดทำดัชนีอาจล้มเหลวหากฐานข้อมูลพบปัญหาเกี่ยวกับข้อมูล การดำเนินการจัดทำดัชนีอาจล้มเหลวเนื่องจากสาเหตุต่อไปนี้

  • คุณใช้ดัชนีถึงขีดจำกัดแล้ว เช่น การดำเนินการอาจใช้รายการดัชนีต่อเอกสารถึงจำนวนสูงสุดแล้ว หากการสร้างดัชนีล้มเหลว คุณจะเห็นข้อความแสดงข้อผิดพลาด หากยังใช้ดัชนีไม่ถึงขีดจำกัด ให้ลองดำเนินการจัดทำดัชนีอีกครั้ง
  • คุณตั้งค่าตัวเลือกดัชนีที่ไม่ซ้ำกันและข้อมูลในช่องที่จัดทำดัชนีจะสร้างรายการดัชนีที่ซ้ำกัน หากต้องการดำเนินการต่อ ให้นำชุดค่าผสมที่ซ้ำกันออกจากข้อมูล

ขั้นตอนถัดไป

ดูวิธีสร้างและจัดการดัชนี