[Bài đọc] MySQL – INDEXES
Một chỉ mục (index) là một cấu trúc dữ liệu giúp cải thiện tốc độ hoạt động trong một bảng. Các chỉ mục có thể được tạo bằng cách sử dụng một hoặc nhiều cột, giúp tra cứu ngẫu nhiên các bản ghi nhanh chóng và sắp xếp các bản ghi hiệu quả.
Trong khi tạo chỉ mục, cần xem xét tất cả các cột sẽ được sử dụng để thực hiện các truy vấn SQL và tạo một hoặc nhiều chỉ mục trên các cột đó.
Thực tế, các chỉ mục cũng là một loại bảng, giữ khóa chính hoặc trường chỉ mục và một con trỏ cho mỗi bản ghi vào bảng thực tế.
Người dùng không thể xem các chỉ mục, chúng chỉ được sử dụng để tăng tốc độ truy vấn và sẽ được công cụ tìm kiếm cơ sở dữ liệu sử dụng để định vị các bản ghi nhanh chóng.
Các câu lệnh INSERT và UPDATE mất nhiều thời gian hơn trên các bảng có chỉ mục, trong khi các câu lệnh SELECT trở nên nhanh chóng trên các bảng đó. Lý do là trong khi thực hiện chèn hoặc cập nhật, cơ sở dữ liệu cũng cần chèn hoặc cập nhật các giá trị chỉ mục.
Simple and Unique Index
Bạn có thể tạo một chỉ mục duy nhất (unique index) trên một bảng. Một chỉ mục duy nhất có nghĩa là hai hàng không thể có cùng giá trị chỉ mục. Đây là cú pháp để tạo một chỉ mục duy nhất trên một bảng:
CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,…);
Bạn có thể sử dụng một hoặc nhiều cột để tạo chỉ mục.
Ví dụ: chúng ta có thể tạo một chỉ mục trên bảng customers bằng cách sử dụng customerNumber:
CREATE UNIQUE INDEX CUSTOMER_INDEX ON customers (customerNumber);
Bạn có thể tạo một chỉ mục đơn giản trên một bảng. Chỉ cần bỏ qua từ khóa UNIQUE từ truy vấn để tạo một chỉ mục đơn giản. Một chỉ mục đơn giản cho phép các giá trị trùng lặp trong một bảng:
CREATE INDEX CUSTOMER_INDEX ON customers (customerNumber);
Nếu bạn muốn tạo chỉ mục các giá trị trong một cột theo thứ tự giảm dần, bạn có thể thêm từ khoá DESC sau tên cột:
CREATE UNIQUE INDEX CUSTOMER_INDEX ON customers (customerNumber DESC);
Sử dụng câu lệnh ALTER để thêm và xoá Index
Có bốn loại câu lệnh để thêm chỉ mục vào bảng:
- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list)– Câu lệnh này thêm một PRIMARY KEY (có nghĩa là các giá trị được lập chỉ mục phải là duy nhất và không thể là NULL).
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list)– Câu lệnh này tạo ra một chỉ mục mà các giá trị phải là duy nhất (ngoại trừ các giá trị NULL, có thể xuất hiện nhiều lần).
- ALTER TABLE tbl_name ADD INDEX index_name (column_list)– Câu lệnh này thêm một chỉ mục bình thường trong đó bất kỳ giá trị nào có thể xuất hiện nhiều hơn một lần.
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) – Câu lệnh này tạo ra một chỉ mục FULLTEXT đặc biệt được sử dụng cho mục đích tìm kiếm văn bản.
Đoạn mã sau đây là một ví dụ để thêm chỉ mục trong bảng đã tồn tại:
ALTER TABLE customers ADD INDEX (customerNumber);
Bạn có thể loại bỏ bất kỳ INDEX nào bằng cách sử dụng mệnh đề DROP cùng với lệnh ALTER.
Hãy thử ví dụ sau để bỏ chỉ mục được tạo ở trên:
ALTER TABLE customers DROP INDEX (customerNumber);
Sử dụng câu lệnh ALTER để thêm và xoá PRIMARY KEY
Khối mã sau đây là một ví dụ để thêm khóa chính trong bảng hiện có. Điều này sẽ tạo một cột KHÔNG NULL trước và sau đó thêm nó làm khóa chính:
ALTER TABLE customers MODIFY customerNumber INT NOT NULL;
ALTER TABLE customers ADD PRIMARY KEY (customerNumber);
Bạn có thể sử dụng lệnh ALTER để loại bỏ khóa chính như sau:
ALTER TABLE customers DROP PRIMARY KEY;
Để loại bỏ một chỉ mục không phải là khoá chính , bạn phải chỉ định tên chỉ mục:
ALTER TABLE customers DROP INDEX CUSTOMER_INDEX;
Trả lời