เมื่อฉันควรใช้KEY
, PRIMARY KEY
, UNIQUE KEY
และINDEX
?
เมื่อฉันควรใช้KEY
, PRIMARY KEY
, UNIQUE KEY
และINDEX
?
คำตอบ:
KEY
และINDEX
คำพ้องความหมายใน MySQL พวกเขาหมายถึงสิ่งเดียวกัน ในฐานข้อมูลคุณจะใช้ดัชนีเพื่อปรับปรุงความเร็วในการดึงข้อมูล ดัชนีจะถูกสร้างขึ้นโดยทั่วไปในคอลัมน์ที่ใช้ในการJOIN
, WHERE
และORDER BY
ข้อ
ลองนึกภาพคุณมีตารางชื่อusers
และคุณต้องการค้นหาผู้ใช้ทั้งหมดที่มีนามสกุล 'Smith' หากไม่มีดัชนีฐานข้อมูลจะต้องผ่านระเบียนทั้งหมดของตาราง: ช้าเพราะยิ่งคุณมีระเบียนในฐานข้อมูลของคุณมากเท่าไหร่ก็ยิ่งต้องทำงานเพื่อค้นหาผลลัพธ์มากขึ้นเท่านั้น ในทางกลับกันดัชนีจะช่วยให้ฐานข้อมูลข้ามไปยังหน้าเว็บที่เกี่ยวข้องที่มีการบันทึก 'Smith' อย่างรวดเร็ว สิ่งนี้คล้ายกันมากกับวิธีที่เรามนุษย์ผ่านไดเรกทอรีสมุดโทรศัพท์เพื่อค้นหาใครบางคนโดยใช้ชื่อ: เราไม่ได้เริ่มค้นหาจากไดเรกทอรีจากหน้าปกเพื่อครอบคลุมตราบใดที่เราใส่ข้อมูลลงในลำดับที่เราสามารถทำได้ ใช้เพื่อข้ามไปยังหน้า 'S' อย่างรวดเร็ว
คีย์หลักและคีย์เฉพาะนั้นคล้ายคลึงกัน คีย์หลักคือคอลัมน์หรือการรวมกันของคอลัมน์ที่สามารถระบุแถวโดยไม่ซ้ำกัน มันเป็นกรณีพิเศษของคีย์ที่ไม่ซ้ำกัน ตารางสามารถมีคีย์หลักได้ไม่เกินหนึ่งคีย์ แต่มีคีย์เฉพาะมากกว่าหนึ่งคีย์ เมื่อคุณระบุคีย์ที่ไม่ซ้ำกันในคอลัมน์ไม่มีแถวที่แตกต่างกันสองแถวในตารางสามารถมีค่าเดียวกัน
โปรดทราบว่าคอลัมน์ที่กำหนดเป็นคีย์หลักหรือคีย์เฉพาะจะถูกจัดทำดัชนีใน MySQL โดยอัตโนมัติ
passengers
มีฟิลด์ต่อไปนี้: (id, first_name, last_name, age, passport_number)
ปกติแล้วคุณจะตั้งค่าid
คอลัมน์ให้เป็นคีย์หลัก คีย์หลักจะเป็นคีย์เฉพาะโดยอัตโนมัติ ความแตกต่างที่สำคัญคือคุณสามารถมีคีย์หลักได้เพียงคีย์เดียวเท่านั้นในตารางและคอลัมน์ไม่สามารถมีNULL
ค่าได้ ไม่มีความจำเป็นต้องตั้งค่าเป็นid
คอลัมน์ที่จะเป็นUNIQUE
เพราะการตั้งค่าให้คีย์หลักก็รับประกันโดยอัตโนมัติจะไม่ซ้ำกัน ... แล้วคุณยังสามารถตั้งค่าpassport_number
การUNIQUE
เพื่อให้ไม่เกินหนึ่งผู้โดยสาร ...
NULL
ในคอลัมน์นั้นได้โดยไม่มีปัญหา
KEY และ INDEX เป็นคำพ้องความหมาย
คุณควรเพิ่มดัชนีเมื่อการวัดประสิทธิภาพและอธิบายให้คุณทราบว่าแบบสอบถามไม่มีประสิทธิภาพเนื่องจากดัชนีที่ขาดหายไป การเพิ่มดัชนีสามารถปรับปรุงประสิทธิภาพการสืบค้น (แต่สามารถชะลอการปรับเปลี่ยนตาราง)
คุณควรใช้ UNIQUE เมื่อคุณต้องการยับยั้งค่าในคอลัมน์นั้น (หรือคอลัมน์) ว่าเป็นค่าที่ไม่ซ้ำกันดังนั้นการพยายามแทรกค่าที่ซ้ำกันส่งผลให้เกิดข้อผิดพลาด
คีย์หลักเป็นทั้งข้อ จำกัด ที่ไม่ซ้ำกันและมันก็หมายความว่าคอลัมน์นั้นไม่ได้เป็นโมฆะ มันถูกใช้เพื่อระบุตัวตนของแต่ละแถว สิ่งนี้มีประโยชน์สำหรับการเข้าร่วมกับตารางอื่นผ่านข้อ จำกัด ของ foreign key แม้ว่ามันจะไม่จำเป็นสำหรับตารางที่จะมีคีย์หลัก แต่ก็เป็นความคิดที่ดี
คีย์หลักไม่อนุญาตให้ใช้NULL
ค่า แต่คีย์เฉพาะอนุญาตให้ใช้NULL
ค่าได้
เราสามารถประกาศคีย์หลักเดียว ในตารางได้ แต่ตารางสามารถมีคีย์ที่ไม่ซ้ำกันหลายตัว (กำหนดคอลัมน์)
PRIMARY KEY
และUNIQUE KEY
มีความคล้ายคลึงยกเว้นมีหน้าที่แตกต่างกัน คีย์หลักทำให้แถวของตารางไม่ซ้ำกัน (เช่นไม่สามารถมี 2 แถวที่มีคีย์เดียวกันแน่นอน) คุณสามารถมีได้ 1 คีย์หลักในตารางฐานข้อมูล
คีย์ที่ไม่ซ้ำทำให้คอลัมน์ของตารางในแถวของตารางไม่ซ้ำกัน (กล่าวคือไม่มีแถวของตาราง 2 อันที่มีค่าที่แน่นอนเหมือนกัน) คุณสามารถมีคอลัมน์ตารางคีย์ที่ไม่ซ้ำกันได้มากกว่า 1 รายการ (ซึ่งแตกต่างจากคีย์หลักซึ่งหมายความว่าคอลัมน์คอลัมน์ 1 ตารางเท่านั้นในตารางนั้นไม่ซ้ำกัน)
INDEX
ยังสร้างเอกลักษณ์ MySQL (ตัวอย่าง) จะสร้างตารางการทำดัชนีสำหรับคอลัมน์ที่ทำดัชนี วิธีนี้จะง่ายต่อการดึงค่าแถวของตารางเมื่อมีการสอบถามแบบสอบถามในคอลัมน์ตารางที่จัดทำดัชนีนั้น ข้อเสียคือถ้าคุณทำการอัปเดต / ลบ / สร้างหลายครั้ง MySQL จะต้องจัดการตารางการจัดทำดัชนี (และอาจเป็นคอขวดของประสิทธิภาพ)
หวังว่านี่จะช่วยได้
UNIQUE KEY
สามารถเป็นได้NULL
แต่PRIMARY KEY
ไม่สามารถเป็นNULL
ได้
คีย์ที่ไม่ซ้ำ: คอลัมน์ที่ไม่มีสองแถวเหมือนกัน
คีย์หลัก: การรวบรวมจำนวนคอลัมน์ขั้นต่ำที่สามารถระบุได้ทุกแถวในตาราง (กล่าวคือไม่มีสองแถวคล้ายกันในทุกคอลัมน์ที่เป็นคีย์หลัก) สามารถมีได้มากกว่าหนึ่งคีย์หลักในตาราง หากมีคีย์เฉพาะอยู่แล้วจะเป็นคีย์หลัก (ไม่ใช่ "the" คีย์หลัก) ในตาราง หากไม่มีคีย์ที่ไม่ซ้ำจะต้องมีค่าคอลัมน์มากกว่าหนึ่งค่าเพื่อระบุแถวเช่น (first_name, last_name, father_name, mother_name) ในบางตารางเป็นคีย์หลัก
ดัชนี: ใช้เพื่อปรับการค้นหาให้เหมาะสม หากคุณกำลังจะค้นหาหรือเรียงลำดับผลลัพธ์บนพื้นฐานของคอลัมน์หลาย ๆ ครั้ง (เช่นคนส่วนใหญ่จะค้นหานักเรียนโดยใช้ชื่อไม่ใช่โดยการหมุนหมายเลขของพวกเขา) จากนั้นจะสามารถปรับให้เหมาะสมหากค่าคอลัมน์ทั้งหมด " จัดทำดัชนี "ตัวอย่างเช่นด้วยอัลกอริทึมต้นไม้ไบนารี
คีย์หลัก - เราสามารถใส่คีย์หลักเดียวเท่านั้นในตารางลงในตารางและเราไม่สามารถปล่อยให้คอลัมน์นั้นว่างเมื่อเราป้อนค่าลงในตาราง
Unique Key - เราสามารถใส่กุญแจพิเศษมากกว่าหนึ่งอันบนโต๊ะและเราอาจปล่อยให้คอลัมน์นั้นว่างเมื่อเราใส่ค่าลงในตาราง คอลัมน์ใช้ค่าที่ไม่ซ้ำกัน (ไม่เหมือนกัน) เมื่อเราใช้คีย์หลัก & ที่ไม่ซ้ำกัน
คีย์หลักถูกใช้เพื่อทำงานกับตารางที่แตกต่างกัน นี่คือรากฐานของฐานข้อมูลเชิงสัมพันธ์ หากคุณมีฐานข้อมูลหนังสือจะเป็นการดีกว่าที่จะสร้าง 2 ตาราง - 1) หนังสือและ 2) ผู้แต่งที่มีคีย์หลัก "id" INT จากนั้นคุณใช้ id ในหนังสือแทนชื่อผู้แต่ง
ใช้รหัสที่ไม่ซ้ำกันหากคุณไม่ต้องการให้มีรายการซ้ำ ตัวอย่างเช่นคุณอาจมีชื่อหนังสือในตารางหนังสือของคุณและต้องการให้แน่ใจว่ามีเพียงรายการเดียวสำหรับแต่ละหนังสือ
รหัสเฉพาะ:
คีย์หลัก