MySQLi - INDEXES

Chỉ mục cơ sở dữ liệu là một cấu trúc dữ liệu cải thiện tốc độ của cá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, cung cấp cơ sở cho cả việc tra cứu ngẫu nhiên nhanh chóng và sắp xếp thứ tự truy cập bản ghi hiệu quả.

Trong khi tạo chỉ mục, cần xem xét 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 đó là gì.

Trên thực tế, chỉ mục cũng là loại bảng, giữ khóa chính hoặc trường chỉ mục và một con trỏ đến từng bản ghi vào bảng thực tế.

Người dùng không thể nhìn thấy các chỉ mục, chúng chỉ được sử dụng để tăng tốc cá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 rất nhanh.

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 đó 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 phải chèn hoặc cập nhật các giá trị chỉ mục.

Chỉ mục đơn giản và duy nhất

Bạn có thể tạo một chỉ mục duy nhất trên một bảng. 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 Chỉ mục trên 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 tôi có thể tạo chỉ mục trên tutorial_inf bằng cách sử dụng NAME_INDEX.

CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf(name);

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 khỏi truy vấn để tạo chỉ mục đơn giản. Chỉ mục đơn giản cho phép các giá trị trùng lặp trong một bảng.

Nếu bạn muốn lập 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ừ dành riêng DESC sau tên cột.

mysql> CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf (name DESC);

Lệnh ALTER để thêm và thả 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 được NULL.

  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) - Câu lệnh này tạo 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) - Điều này thêm một chỉ mục thông 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) - Điều 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.

Đây là ví dụ để thêm chỉ mục trong một bảng hiện có.

mysql> ALTER TABLE tutorials_inf ADD INDEX (id);

Bạn có thể 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 để giảm chỉ mục được tạo ở trên.

mysql> ALTER TABLE tutorials_inf DROP INDEX (c);

Bạn có thể 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 để giảm chỉ mục được tạo ở trên.

ALTER Lệnh để thêm và thả PRIMARY KEY

Bạn cũng có thể thêm khóa chính theo cách tương tự. Nhưng hãy đảm bảo Khóa chính hoạt động trên các cột KHÔNG ĐẦY ĐỦ.

Đây là ví dụ để thêm khóa chính trong bảng hiện có. Điều này sẽ làm cho một cột KHÔNG ĐẦY ĐỦ trước và sau đó thêm nó làm khóa chính.

mysql>  ALTER TABLE tutorials_inf MODIFY id INT NOT NULL;
mysql> ALTER TABLE tutorials_inf ADD PRIMARY KEY (id);

Bạn có thể sử dụng lệnh ALTER để bỏ khóa chính như sau:

mysql> ALTER TABLE tutorials_inf DROP PRIMARY KEY;

Để bỏ một chỉ mục không phải là TỪ KHÓA CHÍNH, bạn phải chỉ định tên chỉ mục.

Hiển thị thông tin INDEX

Bạn có thể sử dụng lệnh SHOW INDEX để liệt kê tất cả các chỉ mục được liên kết với một bảng. Đầu ra định dạng dọc (được chỉ định bởi \ G) thường hữu ích với câu lệnh này, để tránh dòng dài dòng -

Hãy thử ví dụ sau

mysql> SHOW INDEX FROM table_name\G
........