Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để xử lý sự phân mảnh của cột ID tăng tự động trong MySQL?

Bất cứ khi nào chúng tôi đánh số lại, có thể có vấn đề. Cần phải khai báo một ID duy nhất cho một cột.

Trong MySQL phiên bản 5.6 InnoDB, chúng tôi có thể sử dụng lại ID auto_increment bằng cách đưa cột ID vào câu lệnh INSERT và chúng tôi có thể cung cấp bất kỳ giá trị cụ thể nào mà chúng tôi muốn.

Các tình huống như sau -

  • Bất cứ khi nào chúng tôi xóa ID có số cao nhất
  • Bất cứ khi nào chúng tôi khởi động và dừng máy chủ MySQL
  • Bất cứ khi nào chúng tôi chèn một bản ghi mới

Ví dụ về tự động tăng ID bằng cách sử dụng biến auto_increment.

 mysql> tạo bảng UniqueAutoId -> (-> id int auto_increment, -> Unique (id) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,45 giây) 

Chèn các bản ghi vào bảng.

 mysql> chèn vào giá trị UniqueAutoId (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,13 giây) mysql> chèn vào giá trị UniqueAutoId (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,16 giây) mysql> chèn vào giá trị UniqueAutoId (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,07 giây) mysql> chèn vào giá trị UniqueAutoId (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,10 giây) mysql> chèn vào giá trị UniqueAutoId (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,10 giây)  

Hiển thị tất cả các bản ghi.

 mysql> select * từ UniqueAutoId; 

Sau đây là kết quả.

 + ---- + | id | + ---- + | 1 || 2 || 3 || 4 || 5 | + ---- + 5 hàng trong bộ (0,00 giây) 

Để xóa các bản ghi, chúng tôi đã sử dụng câu lệnh DELETE. Ở đây, chúng tôi đang xóa id =5;

 mysql> XÓA khỏi UniqueAutoId trong đó id =5; Truy vấn OK, 1 hàng bị ảnh hưởng (0,14 giây) 

Hiển thị tất cả các bản ghi.

 mysql> select * từ UniqueAutoId; 

Sau đây là kết quả.

 + ---- + | id | + ---- + | 1 || 2 || 3 || 4 | + ---- + 4 hàng trong bộ (0,00 giây) 

Hãy để chúng tôi xóa một bản ghi khỏi bảng một lần nữa.

 mysql> xóa khỏi UniqueAutoId trong đó id =2; Truy vấn OK, 1 hàng bị ảnh hưởng (0,15 giây) 

Một lần nữa, hiển thị các bản ghi từ bảng.

 mysql> select * từ UniqueAutoId; 

Sau đây là kết quả.

 + ---- + | id | + ---- + | 1 || 3 || 4 | + ---- + 3 hàng trong bộ (0,00 giây 

Các kết quả trên dẫn đến sự phân mảnh.