สร้างดัชนีใน MySQL: บทช่วยสอนดัชนี MySQL [2022]

เผยแพร่แล้ว: 2021-01-01

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

เนื่องจาก MySQL เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ที่มีแอปพลิเคชันในส่วนต่างๆ เช่น ฐานข้อมูลบนเว็บ แอปพลิเคชันอีคอมเมิร์ซ โซเชียลมีเดีย เป็นต้น นักวิทยาศาสตร์ด้านข้อมูลจึงจำเป็นต้องรู้เทคนิคทั้งหมดที่เกี่ยวข้องกับ MySQL ซึ่งหนึ่งในนั้นคือดัชนี บทความนี้อธิบายวิธี สร้างดัชนีใน MySQL

สารบัญ

ดัชนีคืออะไร?

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

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

ในระบบฐานข้อมูลส่วนใหญ่ ต้องการประสิทธิภาพสูงและรวดเร็ว ธุรกิจจำนวนมากลงทุนเงินจำนวนมหาศาลกับฮาร์ดแวร์เพื่อการดึงข้อมูลและการจัดการที่รวดเร็วขึ้น แต่การเพิ่มประสิทธิภาพฐานข้อมูลทำให้ต้นทุนลดลงได้

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

อ่าน: เปลี่ยนชื่อคอลัมน์ในSQL

สร้างดัชนี

คุณสามารถ สร้างดัชนีใน MySQL บนตารางได้โดยใช้ไวยากรณ์พื้นฐานต่อไปนี้

สร้างดัชนี index_name table_name (column_name);

คุณยังสามารถสร้างดัชนีเฉพาะบนตารางได้ ซึ่งหมายความว่าชื่อไม่ซ้ำกัน และสองแถวไม่สามารถมีชื่อเดียวกันได้ ไวยากรณ์ต่อไปนี้สามารถใช้สำหรับสิ่งนี้

สร้างดัชนีที่ไม่ซ้ำ index_name บน table_name (column_name);

หากมีการสร้างดัชนีรองสำหรับคอลัมน์ MySQL จะจัดเก็บค่าในโครงสร้างข้อมูลที่แยกจากกัน เช่น B-Tree และ Hash ใน MySQL หากคอลัมน์เป็นคอลัมน์สตริง คุณสามารถสร้างดัชนีสำหรับส่วนนำหน้าของค่าคอลัมน์ของคอลัมน์สตริงได้โดยใช้ไวยากรณ์:

column_name(ความยาว)

ในการสร้างส่วนคีย์คำนำหน้าคอลัมน์เมื่อสร้างตาราง คุณสามารถใช้ไวยากรณ์ต่อไปนี้:

สร้างตาราง table_name(

column_list,

INDEX(column_name(ความยาว))

);

และเพื่อเพิ่มดัชนีลงในตารางที่มีอยู่:

สร้างดัชนี index_name บน table_name (column_name(length));

ความยาวที่นี่คือจำนวนอักขระหากเป็นประเภทสตริงที่ไม่ใช่ไบนารี เช่น CHAR, VARCHAR และ TEXT และจำนวนไบต์หากเป็นประเภทสตริงไบนารี เช่น BINARY, VARBINARY และ BLOB คุณยังสามารถสร้างส่วนสำคัญนำหน้าคอลัมน์สำหรับคอลัมน์ CHAR, VARCHAR, BINARY และ VARBINARY ใน MySQL จำเป็นต้องระบุส่วนสำคัญของคำนำหน้าคอลัมน์ หากคุณได้สร้างดัชนีสำหรับคอลัมน์ BLOB และ TEXT

ในกรณีของดัชนี FULLTEXT ที่รองรับเฉพาะตาราง InnoDB และ MyISAM จะรวมได้เฉพาะคอลัมน์ CHAR, VARCHAR และ TEXT ไม่สนับสนุนการจัดทำดัชนีคำนำหน้าคอลัมน์ และหากมีการระบุความยาวของคำนำหน้า ระบบจะไม่สนใจคำนำหน้า

ต้องอ่าน: แนวคิดโครงการ SQL

การเปลี่ยนแปลงตารางเพื่อเพิ่มหรือวางดัชนี

ในการเพิ่มดัชนีลงในตาราง มีคำสั่งสี่ประเภทที่สามารถใช้ได้:

  1. ในการเพิ่มคีย์หลัก:

แก้ไขตาราง table_name เพิ่มคีย์หลัก (column_list);

ค่าที่จัดทำดัชนีที่นี่ควรไม่ซ้ำกันและไม่สามารถเป็น NULL ได้

  1. สำหรับดัชนีที่มีค่าเฉพาะ:

แก้ไขตาราง table_name ADD UNIQUE index_name (column_list);

ค่าควรไม่ซ้ำกัน ยกเว้น NULL ที่อาจปรากฏขึ้นหลายครั้ง

  1. ในการเพิ่มดัชนีธรรมดา:

แก้ไขตาราง table_name เพิ่มดัชนี index_name (column_list);

ที่นี่ค่าสามารถปรากฏได้มากกว่าหนึ่งครั้ง

  1. ในการสร้างดัชนี FULLTEXT พิเศษ:

แก้ไขตาราง table_name เพิ่ม FULLTEXT index_name (column_list);

สามารถใช้ดัชนี FULLTEXT เพื่อวัตถุประสงค์ในการค้นหาข้อความ

ในตารางที่มีอยู่

ในการเพิ่มดัชนีในตารางที่มีอยู่ คุณสามารถใช้ไวยากรณ์ต่อไปนี้:

แก้ไขตาราง table_name เพิ่มดัชนี (index_name);

ในการลบดัชนีในตาราง จะใช้คำสั่ง DROP INDEX:

แก้ไขตาราง table_name DROP INDEX (index_name);

แสดงข้อมูลดัชนี

ในการแสดงรายการดัชนีทั้งหมดที่เชื่อมโยงกับตารางใดๆ ให้ใช้คำสั่ง SHOW INDEX

แสดงดัชนีจาก table_name\G

'\G' ใช้เพื่อสร้างรายการในรูปแบบแนวตั้ง เพื่อหลีกเลี่ยงการตัดรอบบรรทัดยาว

อ่านเพิ่มเติม: คำถามและคำตอบสัมภาษณ์ SQL

ดัชนีจากมากไปน้อย

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

ไวยากรณ์สำหรับการสร้างหรือเพิ่มดัชนีจากมากไปหาน้อยเป็นเหมือนการเปลี่ยนแปลงหรือสร้างไวยากรณ์ที่ใช้ด้านบน

แก้ไขตาราง table_name เพิ่ม index_name (col1_name desc, col2_name asc);

สร้างดัชนี index_name บน table_name (col1_name desc, col2_name asc);

ดัชนีที่มองไม่เห็น

ในการทำเครื่องหมายดัชนีว่าไม่พร้อมใช้งานสำหรับเครื่องมือเพิ่มประสิทธิภาพการสืบค้น สามารถใช้ดัชนีที่มองไม่เห็นได้ MySQL อัปเดตดัชนีที่มองไม่เห็นเมื่อข้อมูลในคอลัมน์ที่เกี่ยวข้องกับดัชนีเปลี่ยนแปลง ดัชนีจะมองเห็นได้โดยค่าเริ่มต้นและเพื่อให้มองไม่เห็น คุณต้องประกาศการเปิดเผยอย่างชัดเจน ณ เวลาที่สร้างหรือโดยใช้คำสั่ง ALTER TABLE

ในการสร้างดัชนีที่มองไม่เห็นจะใช้ไวยากรณ์ต่อไปนี้:

สร้างดัชนี index_name บน table_name (c1, c2…) มองไม่เห็น;

ในการเปลี่ยนการมองเห็นของดัชนีที่มีอยู่ ใช้ไวยากรณ์ต่อไปนี้:

เปลี่ยนตาราง table_name ALTER INDEX index_name [VISIBLE | ล่องหน];

ลงทะเบียนเรียน หลักสูตรการพัฒนาซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

บทสรุป

สามารถปรับปรุงประสิทธิภาพของคำค้นหา MySQL ได้โดยใช้ดัชนี สิ่งเหล่านี้สามารถกำหนดได้เมื่อสร้างตารางหรือสามารถเพิ่มในภายหลังได้หากสร้างตารางแล้ว

บทความนี้ให้คำอธิบายสั้น ๆ ว่าดัชนีคืออะไรและทำไมจึงใช้ ส่วนถัดไปจะอธิบายวิธี สร้างดัชนีใน MySQL วิธีเพิ่มลงในตารางที่มีอยู่และวิธีสร้างดัชนีเฉพาะ

คำสั่งต่าง ๆ เพื่อแก้ไขตารางและสร้างหรือวางดัชนียังอธิบายพร้อมกับการแสดงข้อมูลดัชนี นอกจากนี้ยังมีการอธิบายสั้น ๆ เกี่ยวกับดัชนีจากมากไปน้อยและดัชนีที่มองไม่เห็น

โดยรวมแล้ว การเรียนรู้และลงมือปฏิบัติจริงกับฐานข้อมูลทั้งหมดที่กล่าวถึงในบทความนี้จะเพิ่มประสบการณ์ของคุณ ศึกษาภาพรวมของหลักสูตร การเรียนรู้ และโอกาสในการทำงานที่เกี่ยวข้อง—แพลตฟอร์มอย่าง upGrad เสนอหลักสูตรที่เต็มไปด้วยพลังซึ่งออกแบบโดยสถาบันที่มีชื่อเสียงอย่าง IIIT-B ใน Executive PG Program Full Stack Development

เตรียมความพร้อมสู่อาชีพแห่งอนาคต

สมัครเลยตอนนี้สำหรับปริญญาโทด้านวิศวกรรมซอฟต์แวร์