ขึ้นอยู่กับการกระจายของข้อมูล
ลองนึกภาพว่าฉันมีหนังสือเล่มหนึ่งที่มีหน้าที่พิมพ์อย่างใกล้ชิด 1,000 หน้าและคำเดียวในหนังสือของฉันคือ 'ใช่' และ 'ไม่' ซ้ำแล้วซ้ำอีกและแจกจ่ายแบบสุ่ม หากฉันถูกขอให้วนรอบอินสแตนซ์ทั้งหมดของ 'ใช่' ดัชนีที่อยู่ด้านหลังของหนังสือจะช่วยได้หรือไม่ มันขึ้นอยู่กับ.
หากมีการแจกแจงแบบสุ่มครึ่งและครึ่งของใช่และไม่ใช่การค้นหาในดัชนีจะไม่ช่วย ดัชนีจะทำให้หนังสือมีขนาดใหญ่ขึ้นมากและอย่างไรก็ตามฉันจะต้องเร็วกว่าเพียงแค่เริ่มจากด้านหน้าและเดินไปตามแต่ละหน้าโดยมองหาอินสแตนซ์ทั้งหมดของ 'ใช่' และวนไปวนมาแทนที่จะค้นหาแต่ละรายการใน ดัชนีแล้วใช้การอ้างอิงจากรายการดัชนีไปยังหน้าที่อ้างถึง
แต่ถ้ามีก็ให้บอกว่า 'ใช่' เพียง 10 อินสแตนซ์ในหนังสือพันหน้าของฉันและอย่างอื่นก็เป็นเพียงไม่มากนับล้านดังนั้นดัชนีจะช่วยฉันประหยัดเวลาได้มากในการค้นหาอินสแตนซ์ที่ 'ใช่' ทั้งสิบรายการและวนไปรอบ ๆ .
มันเหมือนกันในฐานข้อมูล หากเป็นการแจกแจงแบบ 50:50 ดัชนีจะไม่ช่วยอะไร - เอ็นจินฐานข้อมูลจะดีกว่าเพียงแค่การไถข้อมูลตั้งแต่ต้นจนจบ (การสแกนแบบเต็มตาราง) และดัชนีจะทำให้ฐานข้อมูลใหญ่ขึ้นและ เขียนและอัปเดตช้าลง แต่ถ้าเป็นการแจกแจงแบบ 4000: 1 (ตามoucilในเธรดนี้) การค้นหาดัชนีสามารถเร่งความเร็วได้อย่างมหาศาลหากเป็น 1 ใน 4000 รายการที่คุณกำลังมองหา