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