Index มีการทำงานและมีความสำคัญอย่างไร ใน Database

18-ธ.ค.-20

คัมภีร์เทพ IT

หลาย ๆ คนที่ต้องทำงานกับ Database คงจะทราบกันดี การใช้ Index กับ Table ที่มี Records อยู่เป็นจำนวนมาก มีความสำคัญมากแค่ไหน โดยในบทความนี้เราจะมาดูกันว่า Index มีการทำงานและมีความสำคัญอย่างไร ใน Database 

ลองพิจารณา Student Table ที่ถูกสร้างขึ้นใน Oracle SQL Database ด้านล่างนี้

ตอนนี้ เราต้องการทราบรายละเอียดของนักเรียนที่อยู่ในระดับ Primary ซึ่งแน่นอนว่า เราต้องเขียน Select Query ตามด้านล่างนี้

คราวนี้เราจะมาดูกันว่า เกิดอะไรขึ้นบ้าง

เราจะเห็นว่า มันมีการระบุถึง Column ที่ชื่อว่า student_grade และทำการ Search Records ทั้งหมดตามลำดับที่ Match กับ Primary

เมื่อพบ Record แรกที่ Match กับ Primary มันจะ Return Row นั้นกลับมา จากนั้นเมื่อพบ Record ที่ 2 ที่ Match กับ Primary ก็จะ Return Row นั้นกลับมาเช่นกัน จากนั้นก็จะยังคงทำการค้นหา Primary ไปเรื่อย ๆ โดยจะข้าม Record ที่ 3 แล้วไปค้นหา Record ที่ 4 ที่ Match กับ Primary แล้วตอนนี้มันจะหยุดค้นหาหรือไม่ คำตอบคือ ไม่ มันจะยังคงค้นหา Record ที่ Match กับ Primary ต่อไปเรื่อย ๆ จนครบทั้ง Table

มันจะดูไม่มีปัญหาอะไร สำหรับ Table ที่มีเพียงแค่ 5 Rows แต่ลองคิดดูว่า ถ้าเกิดเรามี Table ที่มีเป็น 10,000  Records ล่ะ

h

แน่นอนว่ามันต้องใช้เวลาในการค้นหา Records ที่ต้องการนานมากขึ้น แล้วใครกันที่อยากจะรอนาน ๆ แบบนั้น เชื่อว่าคุณเองก็คงไม่ชอบเช่นกัน

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

ตอนนี้ เรามาลองสร้าง Index ใน Column ที่ชื่อ Student_grade และดูกันว่าจะเกิดอะไรขึ้น

โดยที่ student_student_grade_I คือ ชื่อของ index

จากการเพิ่ม Index ลงใน Table ของเรา ก็จะพบว่ามีการสร้าง Data Structure ขึ้นมาใหม่ ซึ่งจะทำการเก็บ student_grade และ pointer ที่จะอ้างอิงไปยัง Record เดิมใน Table โดย Data Structure ก็คือ BTree ซึ่งมีข้อดีอย่างมากตรงที่ มันมีการจัดเรียง Records ทั้งหมดเอาไว้ โดย Index จะมีลักษณะคล้ายกับ Table ด้านล่าง ที่อยู่ทางด้านซ้าย

ตอนนี้เราจะพบว่า มี Record ที่ 2, 3 และ 4 ที่ Match กับ Primary จากนั้นมันก็จะหยุดการค้นหาและทำการ Return Records ด้วยความช่วยเหลือของ record_pointer นั่นเอง

ที่มา:  https://dev.to/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด