2010-12-03 35 views
21

Với một trong các bảng MySQL của tôi, tôi đã bỏ cột col1 trước khi tôi thả nó từ một chỉ mục duy nhất (col0, col1, col2, col3) có chứa nó.Điều gì sẽ xảy ra nếu tôi thả một cột MySQL mà không làm giảm chỉ mục của nó trước?

Dịch vụ có được tự động quản lý bởi MySQL không? Có vẻ như chỉ số duy nhất trước đây (col0, col1, col2, col3) được tự động thay đổi thành (col0, col2, col3) sau khi tôi xóa cột col1.

Có vấn đề gì hay tôi phải bỏ chỉ mục duy nhất và tạo lại chỉ mục đó như (col0, col2, col3)?

Trả lời

42

Theo các các MySQL 5.1 Reference Manual:

Nếu cột được giảm từ một bảng, các cột cũng được lấy ra từ bất kỳ chỉ số trong đó họ là một phần. Nếu tất cả các cột tạo thành chỉ mục là bị giảm thì chỉ mục cũng sẽ bị giảm. Nếu bạn sử dụng CHANGE hoặc MODIFY để rút ngắn một cột có chỉ mục tồn tại trên cột và cột kết quả là có độ dài nhỏ hơn độ dài chỉ mục, MySQL tự động rút ngắn chỉ mục .

Các vấn đề liên quan