Sitemap

Talk EP1 : Database Index คืออะไร ?

2 min readNov 20, 2020

--

credit: https://logodix.com/database

วันนี้จะมาเปิดเนื้อหา Blog ใหม่ในหัวข้อ “Talk” ที่จะเป็นการนำเรื่องราวง่ายๆ มาเล่าสู่กันฟังโดยจะเน้นเป็นบทความสั้นๆ ย่อยง่าย ไว้อ่านแก้เบื่อครับผม

โดยหัวข้อวันนี้คือเรื่องของ Index ใน Database นั่นเอง หลายๆคนที่ใช้งาน Database ก็น่าจะเคยใช้ Index กันมาหมดแล้ว สำหรับใครที่ยังไม่เข้าใจ วันนี้ว่าเจ้า Index นี้มันคืออะไร ทำไมถึงสำคัญนัก ? วันนี้จะมา Talk ให้ฟังครับผม

Talk : Database Index คืออะไร ?

เริ่ม !! ทุกคนลองนึกภาพตามนะครับ สมมุติว่าเรามีหนังสืออยู่ 1 เล่ม ณ ที่นี่คิดซะว่าเป็นหนังสือนิยาย Superman แล้วกันครับ โดยหนังสือเล่มนี้มีทั้งหมด 1000 หน้า ซึ่งก็จะแบ่งเป็น 10 ตอน ตอนละ 100 หน้า

สมมุติว่าเราอยากจะหาว่ามีช่วงไหนบ้างที่พูดถึงแร่ Kryptonite เราก็ต้องเปิดหาทีละหน้าจนกว่าจะเจอทั้งหมด ถูกมั้ย ? ซึ่งการเปิดหาทีละหน้ามันก็เปรียบเสมือน “Full Table Scan” ใน Database นั่นแหละ

ถ้าเราฉลาดหน่อย ก็อาจจะลองหาตามแต่ละบท ที่คิดว่าน่าจะเกี่ยวข้องกับ Kryptonite ดู ก็อาจจะเร็วขึ้น ซึ่งนั่นก็คือการ optimize ต่างๆ นั่นเอง

จริงๆแล้ว หนังสือมันก็จะมี “Index” หรือ “ดรรชนี” อยู่แล้ว ซึ่งเจ้า “Index” ในหนังสือนั้นมันก็ไม่ต่างอะไรกับใน Database เลยครับ

“Index” ในหนังสือคืออะไร ไปดู…

credit: http://human.tru.ac.th/elearning/tec_ban/tinfo03/inf0221.html

จากภาพจะเห็นว่า มันจะมีการระบุ “คำศัพท์” พร้อม “หน้า” ที่มีคำศัพท์นั้นๆอยู่ เราก็จะทราบได้ว่า คำศัพท์นั้นๆ ปรากฏที่หน้าใดของหนังสือบ้าง

ลองมาเปรียบเทียบกับตัวอย่างข้างต้นของเราที่อยากจะหาเนื้อเรื่องส่วนที่มีคำว่า “Kryptonite” เราก็มาดูที่ Index แล้วก็สามารถไปที่หน้านั้นๆของ หนังสือได้ทันที

อ้าวแล้วถ้าคำนั้นไม่มีใน Index ของหนังสือล่ะ ? เราก็ต้องหาเองหรอ ?

ถะ ถะ ถูกต้องนะคร๊าบบ ซึ่ง Database ก็เช่นกันครับ จริงอยู่ที่ Computer มันอาจจะหาได้เร็วกว่ามนุษย์ ปุถุชน คนธรรมดา แค่เราจินตนาการก็เหนภาพกันแล้วใช่มั้ยล่ะ ว่าการเปิด Index แล้วหา กับการหาเองจนครบ 1000 หน้า มันต่างกันขนาดไหน ทีนี้ถ้าข้อมูลเป็น ล้านๆ record แล้วคุณไม่ทำ Index นึกดูสิ ว่ามันจะเป็นยังไง !!!

แล้ว Index มีข้อเสียมั้ย ?

ถ้าหนังสือมี 1000 หน้า แล้วเราทำ Index ไปสัก 10 หน้า หนังสือก็จะมี 1010 หน้า ?

ถ้าเรามี Index เยอะๆ สัก 100 หน้า หนังสือเราก็จะมี 1100 หน้า ?

เพื่อนๆพอจะเห็นข้อเสียของมันรึยังครับ ? ยิ่งหนังสือนั้นมี Index เยอะมันก็จะกินหน้ากระดาษมากขึ้นเรื่อยๆ ซึ่งก็ไม่ต่างอะไรจาก Database อีกเช่นเคย ถ้าเรามี Index ยิ่งเยอะมันก็จะกินพื้นที่ของ Disk เรามากขึ้นเรื่อยๆ นั่นเอง…

สำหรับ Talk วันนี้ หวังว่าหลายๆคนจะเห็นภาพมากขึ้น ถ้าใครยังไม่หนำใจ แอบสปอยไว้นิดนึงครับว่า Talk ถัดไป จะมาเล่าถึง Database และ Index ในเชิงการทำงานจริงๆให้ฟังครับว่ามันทำงานยังไงกันแน่…

--

--

noomerZx
noomerZx

Written by noomerZx

Software Engineer, Blogger, Runner

No responses yet