ดัชนีมีผลต่อประสิทธิภาพการค้นหาอย่างไร


12

เห็นได้ชัดว่าการรักษาดัชนีที่แตกต่างกันหลายประการมีผลกระทบด้านลบต่อประสิทธิภาพการแทรกและลบ แล้วประสิทธิภาพของคิวรี: มันสมเหตุสมผลหรือไม่ที่ทำให้ดัชนีมีจำนวนมากเกินไปในตาราง? ประสิทธิภาพของแบบสอบถามจะดีขึ้นในทุกกรณีเมื่อมีการเพิ่มดัชนี (แน่นอนสำหรับแบบสอบถามที่ใช้ดัชนีเลย) หรือเป็นไปได้ว่าประสิทธิภาพของแบบสอบถามจะลดลงด้วยดัชนีมากเกินไปเพราะจำเป็นต้องปรึกษาดัชนีทั้งหมดเพื่อรับ ผลลัพธ์?

ในกรณีที่มีดัชนีแตกต่างกันในตาราง: พวกเขาทั้งหมดจะได้รับการพิจารณาหรือเฉพาะที่ดีที่สุดจากมุมมองของเครื่องมือเพิ่มประสิทธิภาพ? ออราเคิลใช้ดัชนีหลายมิติหรือไม่?


2
ทำไมคุณไม่ลองทดสอบดูแล้วรายงานผลกลับมา? :)
Neil McGuigan

ฉันจะทำในวันพรุ่งนี้ :)
paweloque

2
ดัชนีไม่จำเป็นต้องทำให้การลบช้าลง แต่ยังสามารถเพิ่มความเร็วได้ (เช่นเดียวกับการอัปเดตที่สามารถใช้ประโยชน์จากดัชนี)
a_horse_with_no_name

@el หัวหน้าสิ่งที่จุดในการฟื้นฟูล้อ? ดังนั้นใช่ผลการสืบค้นมีปัญหา แต่เราทราบว่าการแทรก / ลบจะได้รับผลกระทบ แล้วการอัพเดตล่ะ? พวกเขาจะได้รับผลกระทบในเชิงลบหรือไม่?
Sangram

คำตอบ:


15

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

จากคู่มือแนวคิดเกี่ยวกับ Oracle ต่อไปนี้เป็นเกณฑ์สำหรับการสร้างดัชนี

โดยทั่วไปให้พิจารณาสร้างดัชนีในคอลัมน์ในสถานการณ์ต่อไปนี้:

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

  • ข้อ จำกัด ของ Referential Integrity มีอยู่ในคอลัมน์หรือคอลัมน์ที่จัดทำดัชนี ดัชนีเป็นวิธีหนึ่งในการหลีกเลี่ยงการล็อกเต็มตารางซึ่งอาจจำเป็นต้องใช้หากคุณอัปเดตคีย์หลักของตารางหลักรวมเข้ากับตารางหลักหรือลบออกจากตารางหลัก

  • ข้อ จำกัด คีย์ที่ไม่ซ้ำกันจะถูกวางไว้บนตารางและคุณต้องการระบุดัชนีและตัวเลือกดัชนีทั้งหมดด้วยตนเอง

ดัชนีทั้งหมดจะได้รับการพิจารณาในแง่ที่ว่าดัชนีทั้งหมดในตารางในแบบสอบถามได้รับการตรวจสอบเพื่อพิจารณาว่าสามารถใช้ดัชนีเหล่านั้นได้หรือไม่ ผู้ที่สามารถตรวจสอบเพิ่มเติมเพื่อตรวจสอบประโยชน์


7

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


0

ฉันพบนี้ในการเลือกดัชนีกลยุทธ์ของคู่มือการประยุกต์ใช้ของผู้พัฒนา หน้านั้นเกี่ยวกับ 'การเลือกกลยุทธ์ดัชนี':

จำกัด จำนวนดัชนีสำหรับแต่ละตาราง

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

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


2
จากคำถาม: "การรักษาดัชนีที่แตกต่างกันอย่างชัดเจนมีผลกระทบด้านลบต่อประสิทธิภาพการทำงานของการแทรกและการลบ" วิธีการเกี่ยวกับประสิทธิภาพการค้นหา "
แจ็คบอกว่าลอง topanswers.xyz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.