Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

คาร์ดินัลลิตี้ใน MySQL คืออะไร?


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

ภาวะคาร์ดินาลลิตีสามารถแบ่งออกได้เป็น 2 ประเภท ดังนี้ −

  • คาร์ดินัลลิตี้ต่ำ − ค่าทั้งหมดสำหรับคอลัมน์ต้องเหมือนกัน

  • คาร์ดินัลลิตี้สูง − ค่าทั้งหมดสำหรับคอลัมน์ต้องไม่ซ้ำกัน

แนวคิดเรื่องคาร์ดินัลลิตี้สูงจะใช้ถ้าเราใส่ข้อจำกัดในคอลัมน์เพื่อจำกัดค่าที่ซ้ำกัน

คาร์ดินัลลิตี้สูง

ต่อไปนี้คือตัวอย่าง High Cardinality ซึ่งค่าทั้งหมดของคอลัมน์ต้องไม่ซ้ำกัน

mysql> สร้างตาราง UniqueDemo1 -> ( -> id int, -> name varchar(100), ->UNIQUE(id,name) -> );Query OK, 0 แถวได้รับผลกระทบ (0.81 วินาที

กำลังแทรกระเบียนลงในตาราง

mysql> แทรกลงในค่า UniqueDemo1 (1,'John');Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า UniqueDemo1 (1,'John');ERROR 1062 (23000):รายการซ้ำ ' 1-John' สำหรับรหัส 'id'

ในด้านบนนี้ เราได้รับข้อผิดพลาดเมื่อเราแทรกระเบียนเดียวกันลงในตาราง

เพื่อแสดงรายการทั้งหมด

mysql> เลือก *จาก UniqueDemo1;

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

<ก่อนหน้า>+------+------+| id | ชื่อ |+------+------+| 1 | John |+------+------+1 แถวในชุด (0.00 วินาที)

คาร์ดินัลลิตี้ต่ำ

ตัวอย่างคาร์ดินัลลิตี้ต่ำ

การสร้างตาราง

mysql> สร้างตาราง LowCardinality -> ( -> id int, -> name varchar(100) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.71 วินาที)

การแทรกเรคคอร์ดที่มีค่าซ้ำกัน

mysql> แทรกลงในค่า LowCardinality (1,'John'); Query OK, 1 แถวที่ได้รับผลกระทบ (0.19 วินาที)mysql> แทรกลงในค่า LowCardinality (1,'John'); Query OK, 1 แถวที่ได้รับผลกระทบ (0.14 วินาที )

กำลังแสดงรายการทั้งหมด

mysql> เลือก *จาก LowCardinality;

ผลลัพธ์แสดงค่าที่ซ้ำกัน เนื่องจากเราไม่ได้รวม UNIQUE ขณะสร้างตาราง

<ก่อนหน้า>+------+------+| id | ชื่อ |+------+------+| 1 | จอห์น || 1 | John |+------+------+2 แถวในชุด (0.00 วินาที)