มีเหตุผลใดที่จะใช้ดัชนีสำหรับตารางที่เล็กมาก (มากถึง 1,000 แถว)?


9

ในระหว่างการพัฒนาแอพพลิเคชั่นฉันมีตารางจำนวนมากที่เก็บข้อมูล "เล็ก" จำนวนมาก (โดยปกติแล้วจะมีค่า 10-40 ค่าid+ valueและบางครั้งtype) ซึ่งเก็บแอตทริบิวต์สำหรับ "วัตถุ" เช่นสด / เน่าแดง / เขียว / น้ำเงินสำหรับผลิตภัณฑ์

ฉันไม่ได้ใส่คุณสมบัตินี้ไว้ในตารางผลิตภัณฑ์เนื่องจากส่วนประกอบอิเล็กทรอนิกส์ไม่สามารถสดใหม่และก๊าซออกซิเจนไม่สามารถเป็นสีแดงและตารางไม่สามารถนับแถวได้ไม่ จำกัด ...

สำหรับการจัดเก็บคุณสมบัติฉันใช้ตารางขนาดเล็กที่กำหนดเองที่ฟิลด์ 2-3: idสำหรับการเชื่อมโยงnameเพื่อแสดงในแอปพลิเคชันและบางครั้งtypeถ้ากลุ่มคุณลักษณะในประเภทเดียวกัน

"ออบเจ็กต์" หลักเชื่อมโยงกับแอตทริบิวต์ผ่านตารางหลายต่อหลายกลาง

มีเหตุผลในการสร้างและรักษาดัชนีสำหรับ "พจนานุกรมขนาดเล็ก" เหล่านั้นที่มีน้อยกว่า 1,000 รายการ (ปกติคือ 10-40) หรือไม่

ฐานข้อมูลเป้าหมายของฉันคือ Oracle แต่ฉันหวังว่าจะตอบผู้ขายอิสระ ...

ฉันเติม - ไม่ แต่ไม่มีทักษะทางเทคนิคในการปรับความเหมาะสมของฉัน ...

คำตอบ:


14

โดยทั่วไปแล้วใช่ หากไม่มีดัชนีรูปแบบการเข้าถึงจะต้องตรวจสอบทุกแถวเพื่อดูว่าเป็นสิ่งที่คุณต้องการหรือไม่ ปัญหาไม่ใช่ขนาดของตาราง แต่เกิดขึ้นพร้อมกัน การสแกนของคุณอาจปิดกั้นการทำธุรกรรมที่ปราศจากข้อผูกมัดเพียงเพื่อรอแถวที่ท้ายที่สุดจะ 'ปลดล็อก' เพื่อปลดล็อก เนื่องจากการสแกนของคุณรับประกันว่าจะ 'ดู' ทุกแถวการสแกนทุกครั้งจะบล็อกหลังการเขียนใด ๆ (แทรกลบหรืออัปเดต) Oracle ใช้ค่าเริ่มต้นในการแยกสแนปช็อตซึ่งเป็นปกติในสถานการณ์นี้ (ไม่มีการปิดกั้น) แต่ผู้ขายรายอื่นจะใช้ค่าเริ่มต้นเป็นอย่างอื่นเช่น SQL Server จะใช้ค่าเริ่มต้นเป็น Read commit ซึ่งจะบล็อก

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


ขอบคุณสำหรับคำอธิบายฉันมีคำถามติดตาม (แม้ตอนนี้จะเป็น 3 ปีต่อมา) แล้วโต๊ะเล็ก ๆ ที่มีขนาดสูงสุด 3 หรือ 4 แถวล่ะ
Rob

ตารางขนาดเล็กบางอัน (ที่บรรจุใน 1-2 หน้า) น่าจะถูกสแกนมาก
Remus Rusanu

@Remus จำเป็นต้องสร้างดัชนีบน MySQL
Singh Kailash
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.