06/04/2021, 14:50

Cách xóa Index trong MySQL - xóa khóa chính primary key - MySQL nâng cao

Trong bài này mình sẽ hướng dẫn các bạn cách xóa index trong MySQL bằng cách sử dụng lệnh DROP INDEX, lệnh này rất hữu ích vì nó giúp bạn quản lý được các index trong table của mình. 1. Cách sử dụng DROP INDEX trong MySQL Để xóa một Index đã có sẵn trong table thì ta sử dụng câu lệnh DROP ...

Trong bài này mình sẽ hướng dẫn các bạn cách xóa index trong MySQL bằng cách sử dụng lệnh DROP INDEX, lệnh này rất hữu ích vì nó giúp bạn quản lý được các index trong table của mình.

1. Cách sử dụng DROP INDEX trong MySQL

Để xóa một Index đã có sẵn trong table thì ta sử dụng câu lệnh DROP INDEX, cú pháp như sau:

DROP INDEX index_name ON table_name
[algorithm_option | lock_option];

Trong đó:

  • DROP INDEX là câu lệnh khai báo bắt đầu yêu cầu xóa index
  • index_name là tên index mà bạn muốn xóa
  • table_name là table bạn muốn xóa
  • algorithm_option và lock_option là hai thông số tùy chọn, mình sẽ nói về nó ở phần tiếp theo.

Algorithm

Thông số algorithm_option là thuật toán àm bạn muốn sử dụng để xóa chỉ mục index, cú pháp của nó như sau:

ALGORITHM [=] {DEFAULT|INPLACE|COPY}

Để xóa chỉ mục, các thuật toán sau được hỗ trợ:

  • COPY: Table sẽ được copy sang một bảng mới, sau đó thực hiện xóa index trên table gốc, tất cả các câu lệnh khác như INSERT / UPDATE trên table này sẽ bị khóa không được thực hiện tại thời điểm đó.
  • INPLACE: Table được xây dựng lại tai chỗ thay vì sao chép sang bảng mới. Thuật toán này cho phép các câu lệnh khác thực hiện trong quá trình xóa.

Lưu ý rằng câu lệnh ALGORITHM là tùy chọn, nếu bạn không thiết lập thì nó sẽ sử dụng thuật toán INPLACE. Trong trường hợp INPLACE không hỗ trợ thì nó sẽ sử dụng COPY.

Nếu bạn sử dụng DEFAULT đồng nghĩa bạn bỏ qua mệnh đề ALGORITHM này.

Lock

Thông số Lock_option kiểm soát mức độ đọc và ghi đồng thời trên bảng trong khi chỉ mục đang bị xóa.

Sau đây cho thấy cú pháp của lock_option:

LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}

Các chế độ lock đuọc hỗ trợ như sau:

  • DEFAULT: Cho phép bạn có mức độ đồng thời tối đa cho một thuật toán nhất định. Đầu tiên nó cho phép đọc và ghi đồng thời nếu được hỗ trợ. Nếu không nó cho phép đọc đồng thời nếu được hỗ trợ. Nếu không thì thực thi truy cập độc quyền.
  • NONE: nếu NONE được hỗ trợ, bạn có thể đọc và ghi đồng thời. Nếu không MySQL phát sinh lỗi.
  • SHARED: Nếu SHARED được hỗ trợ thì bạn có thể đọc đồng thời nhưng không ghi. MySQL phát sinh lỗi nếu các lần đọc đồng thời không được hỗ trợ.
  • EXCLUSIVE: điều này thực thi quyền truy cập độc quyền.

2. Sử dụng lệnh DROP INDEX để xóa chỉ mục trong MySQL

Trước tiên hãy tạo một table leads có cấu trúc như sau:

CREATE TABLE leads(
    lead_id INT AUTO_INCREMENT,
    first_name VARCHAR(100) NOT NULL,
    last_name VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL,
    information_source VARCHAR(255),
    INDEX name(first_name,last_name),
    UNIQUE email(email),
    PRIMARY KEY(lead_id)
);

Câu lệnh dưới đây xóa chỉ mục name ra khỏi table leads.

DROP INDEX name ON leads;

Câu lệnh sau sẽ loại bỏ chỉ mục email từ leads với một thuật toán và khóa cụ thể:

DROP INDEX email ON leads
ALGORITHM = INPLACE 
LOCK = DEFAULT;

2. Xóa khóa chính Primary Key ra khỏi table

Chỉ mục Primary Key là loại đặc biệt có tên gọi là PRIMARY, vì vậy bạn sử dụng nó để áp dụng trong lệnh Drop Index.

DROP INDEX `PRIMARY` ON table_name;

Ví dụ: Tạo mới một table như sau.

CREATE TABLE t(
    pk INT PRIMARY KEY,
    c VARCHAR(10)
);

Và đây là câu lệnh xóa khóa chính:

DROP INDEX `PRIMARY` ON t;

Trên là hướng dẫn cách xóa khóa chỉ mục index trong MySQL bằng cách sử dụng lệnh DROP INDEX. Chúc bạn thực hiện thành công, hẹn gặp ở bài tiếp theo nhé.

Bùi Văn Nam

27 chủ đề

7090 bài viết

Cùng chủ đề
0