| เกี่ยวข้องกับ Cloud Firestore รุ่น Enterprise เท่านั้น |
หากต้องการแก้ปัญหาการค้นหาที่ช้า ให้ใช้คำอธิบายการค้นหา เพื่อรับแผนการดำเนินการค้นหา และโปรไฟล์การดำเนินการรันไทม์ ส่วนต่อไปนี้จะอธิบาย ขั้นตอนที่คุณทำได้เพื่อเพิ่มประสิทธิภาพการค้นหาโดยขึ้นอยู่กับโปรไฟล์การดำเนินการ
จำกัดจำนวนผลลัพธ์
ใช้ฟิลด์ระเบียนที่แสดงผลในแผนการดำเนินการเพื่อ
ระบุว่าการค้นหาแสดงผลเอกสารจำนวนมากหรือไม่ ลองจำกัดจำนวน
เอกสารที่แสดงโดยใช้
$limitclause ซึ่งจะช่วยลดขนาดไบต์ที่แปลงเป็นอนุกรมของผลลัพธ์เมื่อแสดงผลต่อไคลเอ็นต์ผ่านเครือข่าย ในกรณีที่Limitโหนดอยู่ก่อนMajorSortโหนด เครื่องมือค้นหาสามารถ
รวมLimitและMajorSortโหนดเข้าด้วยกัน และแทนที่การสร้างและการจัดเรียงในหน่วยความจำทั้งหมด
ด้วยการจัดเรียง TopN ซึ่งจะช่วยลดข้อกำหนดด้านหน่วยความจำสำหรับ
การค้นหา
จำกัดขนาดเอกสารผลลัพธ์
ลองจำกัดขนาดของเอกสารที่ส่งคืนโดยใช้คําสั่ง $project เพื่อหลีกเลี่ยงการดึงข้อมูลฟิลด์ที่ไม่จําเป็น ซึ่งจะช่วยลดต้นทุนด้านการประมวลผลและหน่วยความจำในการประมวลผล
ผลลัพธ์ระดับกลาง รวมถึงขนาดไบต์ที่แปลงเป็นอนุกรมของผลลัพธ์เมื่อส่งกลับ
ไปยังไคลเอ็นต์ผ่านเครือข่าย ในกรณีที่ฟิลด์ทั้งหมดที่อ้างอิงใน
การค้นหาครอบคลุมโดยดัชนีปกติ (ไม่ใช่ดัชนีแบบหลายคีย์) การดำเนินการนี้ยังช่วยให้การค้นหา
ครอบคลุมการสแกนดัชนีทั้งหมดได้ด้วย ซึ่งจะช่วยหลีกเลี่ยงการดึงข้อมูลเอกสารจาก
ที่เก็บข้อมูลหลัก
ใช้ดัชนี
ใช้วิธีการต่อไปนี้เพื่อตั้งค่าและเพิ่มประสิทธิภาพดัชนี
ระบุว่าคําค้นหาใช้ดัชนีหรือไม่
คุณสามารถระบุได้ว่าคําค้นหาใช้ดัชนีหรือไม่โดยตรวจสอบโหนดใบใน แผนการดําเนินการ หากโหนดใบของแผนการดำเนินการเป็นโหนด TableScan นั่นหมายความว่าการค้นหาไม่ได้ใช้ดัชนีและกำลังสแกนเอกสารจากที่เก็บข้อมูลหลัก หากมีการใช้ดัชนี โหนดใบของแผนการดำเนินการจะแสดงรหัสและฟิลด์ดัชนีของดัชนี
ระบุว่าดัชนีที่ใช้สามารถเพิ่มประสิทธิภาพได้หรือไม่
ดัชนีมีประโยชน์สำหรับการค้นหาหากลดจำนวนเอกสารที่เครื่องมือค้นหาต้องดึงจากที่เก็บข้อมูลหลักได้ หรือหากการจัดลำดับฟิลด์ตรงกับข้อกำหนดการจัดเรียงของการค้นหา
หากใช้ดัชนีสำหรับคำค้นหา แต่เครื่องมือค้นหายังคงดึงข้อมูลและ ทิ้งเอกสารจำนวนมากตามที่ระบุโดยโหนดสแกนที่แสดงผลระเบียนจำนวนมาก ตามด้วยโหนดตัวกรอง ที่แสดงผลระเบียนเพียงไม่กี่รายการ นี่เป็นสัญญาณที่บ่งบอกว่า เพรดิเคตของคำค้นหาที่ตรงกันโดยใช้ดัชนีนั้นไม่ได้เลือก หากต้องการสร้างดัชนีที่ เหมาะสมยิ่งขึ้น โปรดดูสร้างดัชนี
หากใช้ดัชนีที่ไม่ใช่แบบหลายคีย์สำหรับการค้นหา แต่เครื่องมือค้นหายังคง จัดเรียงชุดผลลัพธ์ในหน่วยความจำ ดังที่ระบุโดยโหนด MajorSort ในแผนการดำเนินการค้นหา นี่เป็นสัญญาณว่าดัชนีที่ใช้ ไม่สามารถใช้เพื่อตอบสนองข้อกำหนดการจัดเรียงของการค้นหาได้ ดูส่วนถัดไปเพื่อสร้างดัชนีที่ เหมาะสมยิ่งขึ้น
ดัชนีสำหรับ $lookup
หากต้องการปรับปรุงประสิทธิภาพของ$lookupสเตจ ให้สร้างดัชนีในforeignFieldในคอลเล็กชันfrom ซึ่งจะช่วยให้การดำเนินการเข้าร่วมค้นหาเอกสารที่ตรงกันในคอลเล็กชัน from ได้อย่างมีประสิทธิภาพโดยไม่ต้องสแกนทั้งคอลเล็กชัน
สร้างดัชนี
ทำตามเอกสารประกอบการจัดการดัชนีเพื่อสร้างดัชนี หากต้องการให้การค้นหาใช้ดัชนีได้ ให้สร้างดัชนีปกติ (ไม่ใช่ดัชนีหลายคีย์) โดยมีฟิลด์ตามลำดับต่อไปนี้
- ฟิลด์ทั้งหมดที่จะใช้ในตัวดำเนินการเท่ากับ หากต้องการเพิ่มโอกาสในการนำกลับมาใช้ใหม่ ในการค้นหา ให้จัดเรียงฟิลด์ตามลำดับการเกิดของฟิลด์ใน โอเปอเรเตอร์ความเท่ากันในการค้นหา
- ฟิลด์ทั้งหมดที่จะจัดเรียง (ในลำดับเดียวกัน)
- ฟิลด์ที่จะใช้ในโอเปอเรเตอร์ช่วงหรือโอเปอเรเตอร์ความไม่เท่ากันในลำดับการลดลงของความสามารถในการเลือกข้อจำกัดการค้นหา
- ฟิลด์ที่จะแสดงเป็นส่วนหนึ่งของ การค้นหาในดัชนี: การรวมฟิลด์ดังกล่าวไว้ในดัชนีจะช่วยให้ดัชนีครอบคลุม การค้นหาและหลีกเลี่ยงการดึงข้อมูลเอกสารจากที่เก็บข้อมูลหลัก
สําหรับการค้นหาที่เกี่ยวข้องกับการกรองและการจัดเรียงฟิลด์อาร์เรย์ ให้ลองสร้าง ดัชนีหลายคีย์
ใช้คำแนะนำการค้นหา
หากคุณสร้างดัชนีที่เหมาะสมกว่าสําหรับ การค้นหา แต่เครื่องมือค้นหาไม่ได้ใช้ดัชนีนั้น คุณสามารถลบล้าง ค่ากําหนดดัชนีของเครื่องมือค้นหาได้โดยใช้คำใบ้การค้นหา
ดูข้อมูลเพิ่มเติมเกี่ยวกับเอาต์พุตของการค้นหาที่ดำเนินการด้วย Query Explain ได้ที่ข้อมูลอ้างอิงการดำเนินการค้นหา