What exactly does Indexing in a Database do?
18-Dec-20
คัมภีร์เทพ IT
See the original english version Click here!
หลาย ๆ คนที่ต้องทำงานกับ 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 ล่ะ
แน่นอนว่ามันต้องใช้เวลาในการค้นหา 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 เป็นเพื่อนนะคะ
บทความล่าสุด