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

วิธีจัดการกับการกระจายตัวของคอลัมน์ ID การเพิ่มอัตโนมัติใน MySQL?


เมื่อใดก็ตามที่เรากำหนดหมายเลขใหม่ อาจมีปัญหา จำเป็นต้องประกาศ ID เฉพาะสำหรับคอลัมน์

ใน MySQL เวอร์ชัน 5.6 InnoDB เราสามารถนำ auto_increment ID กลับมาใช้ใหม่ได้ โดยการรวมคอลัมน์ ID ไว้ในคำสั่ง INSERT และเราสามารถให้ค่าเฉพาะใดๆ ที่เราต้องการได้

สถานการณ์มีดังนี้ −

  • เมื่อใดก็ตามที่เราลบ ID ที่มีตัวเลขสูงสุด
  • เมื่อใดก็ตามที่เราเริ่มและหยุดเซิร์ฟเวอร์ MySQL
  • เมื่อใดก็ตามที่เราใส่บันทึกใหม่

ตัวอย่างการเพิ่ม ID อัตโนมัติโดยใช้ตัวแปร auto_increment

mysql> สร้างตาราง UniqueAutoId -> ( -> id int auto_increment, -> Unique(id) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.45 วินาที)

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

mysql> แทรกลงในค่า UniqueAutoId (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า UniqueAutoId (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า UniqueAutoId (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.07 วินาที)mysql> แทรกลงในค่า UniqueAutoId ();แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> แทรกลงในค่า UniqueAutoId (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที) 

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

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

ต่อไปนี้เป็นผลลัพธ์

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

ในการลบบันทึก เราใช้คำสั่ง DELETE เรากำลังลบ id=5;

mysql> ลบออกจาก UniqueAutoId โดยที่ id=5;Query OK ได้รับผลกระทบ 1 แถว (0.14 วินาที)

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

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

ต่อไปนี้เป็นผลลัพธ์

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

ให้เราลบบันทึกออกจากตารางอีกครั้ง

mysql> ลบออกจาก UniqueAutoId โดยที่ id=2;Query OK ได้รับผลกระทบ 1 แถว (0.15 วินาที)

แสดงบันทึกจากตารางอีกครั้ง

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

ต่อไปนี้เป็นผลลัพธ์

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

ข้างต้นส่งผลให้เกิดการกระจายตัว