Việc bỏ một chỉ mục trùng lặp trong MySQL mất khá nhiều thời gian, vì vậy trong khi chờ đợi, tôi đã tìm kiếm về nó và tìm thấy bài đăng này từ năm 2006, nói về cách xử lý ADD
và DROP
lập chỉ mục của MySQL .
Nếu bảng T là bảng MySQL có bốn chỉ mục (ndx1, ndx2, ndx3, ndx4) và bạn muốn 'thay đổi bảng T thả chỉ mục ndx3;' đây chính xác là những gì xảy ra dưới mui xe:
1) MySQL sao chép T.MYD vào bảng tạm thời, ví dụ: S.MYD và S.MYI byte không. 2) MySQL không 'thay đổi bảng S thêm chỉ mục ndx1 (...); 3) MySQL không 'thay đổi bảng S thêm chỉ mục ndx2 (...); 4) MySQL không 'thay đổi bảng S thêm chỉ mục ndx4 (...); 5) MySQL xóa T.MYD và xóa T.MYI 6) MySQL đổi tên S.MYD thành T.MYD và đổi tên S.MYI thành T.MYI
Điều này có còn đúng không? Là lời khuyên của anh ấy vẫn còn hiệu lực?
Cho cùng bảng MyISAM T có bốn chỉ mục (ndx1, ndx2, ndx3, ndx4) và bạn muốn 'thay đổi bảng T thả chỉ số ndx3;' thay vào đó hãy thử:
1) tạo bảng T1 như T; Điều này tạo ra một bảng trống T1 với các chỉ mục ndx1, ndx2, ndx3 và ndx4. 2) thay đổi bảng chỉ số thả T1 ndx3; Điều này làm giảm chỉ số ndx3 trên T1 trống, sẽ là tức thời. 3) chèn vào T1 chọn * từ T; Điều này sẽ điền vào bảng T và tải cả ba (3) chỉ mục cho T1 trong một lần. 4) thả bảng T; 5) thay đổi bảng T1 đổi tên thành T;
Làm thế nào để tất cả các bạn xử lý việc thêm và xóa chỉ mục từ các bảng lớn?