Chỉ mục là một cấu trúc dữ liệu cho phép chúng ta thêm các chỉ mục trong bảng hiện có. Nó cho phép bạn cải thiện việc truy xuất bản ghi nhanh hơn trên bảng cơ sở dữ liệu. Nó tạo một mục nhập cho từng giá trị của các cột được lập chỉ mục. Chúng tôi sử dụng nó để nhanh chóng tìm thấy bản ghi mà không cần tìm kiếm từng hàng trong bảng cơ sở dữ liệu bất cứ khi nào bảng được truy cập. Chúng ta có thể tạo một chỉ mục bằng cách sử dụng một hoặc nhiều cột của bảng để truy cập hiệu quả vào các bản ghi
Khi một bảng được tạo bằng khóa chính hoặc khóa duy nhất, nó sẽ tự động tạo một chỉ mục đặc biệt có tên là CHÍNH. Chúng tôi gọi chỉ mục này là chỉ mục nhóm. Tất cả các chỉ mục khác với chỉ mục CHÍNH được gọi là chỉ mục không nhóm hoặc chỉ mục phụ
Cần lập chỉ mục trong MySQL
Giả sử chúng ta có một sổ liên lạc chứa tên và số điện thoại di động của người dùng. Trong sổ liên lạc này, chúng tôi muốn tìm số điện thoại di động của Martin Williamson. Nếu sổ liên lạc ở dạng không có thứ tự nghĩa là tên của sổ liên lạc không được sắp xếp theo thứ tự abc, chúng ta cần phải xem qua tất cả các trang và đọc từng tên cho đến khi không tìm thấy tên mong muốn mà chúng ta đang tìm kiếm. Loại tên tìm kiếm này được gọi là tìm kiếm tuần tự
Để tìm tên và liên hệ của người dùng từ bảng danh bạ, thông thường, chúng ta thường thực hiện truy vấn sau
Truy vấn này rất đơn giản và dễ dàng. Mặc dù tìm thấy số điện thoại và tên của người dùng nhanh chóng, nhưng cơ sở dữ liệu sẽ tìm kiếm toàn bộ các hàng của bảng cho đến khi không tìm thấy các hàng mà bạn muốn. Giả sử bảng danh bạ chứa hàng triệu hàng, khi đó nếu không có chỉ mục thì việc truy xuất dữ liệu mất rất nhiều thời gian mới tìm được kết quả. Trong trường hợp đó, lập chỉ mục cơ sở dữ liệu đóng một vai trò quan trọng trong việc trả về kết quả mong muốn và cải thiện hiệu suất tổng thể của truy vấn
Câu lệnh TẠO INDEX của MySQL
Nói chung, chúng tôi tạo một chỉ mục tại thời điểm tạo bảng trong cơ sở dữ liệu. Câu lệnh sau đây tạo một bảng có chỉ mục chứa hai cột col2 và col3
Nếu chúng ta muốn thêm chỉ mục vào bảng, chúng ta sẽ sử dụng câu lệnh CREATE INDEX như sau
Trong câu lệnh này, index_name là tên của chỉ mục, table_name là tên của bảng chứa chỉ mục và column_names là danh sách các cột
Hãy để chúng tôi thêm chỉ mục mới cho cột col4, chúng tôi sử dụng câu lệnh sau
Theo mặc định, MySQL cho phép loại chỉ mục BTREE nếu chúng tôi chưa chỉ định loại chỉ mục. Bảng sau đây hiển thị các loại chỉ mục khác nhau dựa trên công cụ lưu trữ của bảng
Chỉ mục công cụ lưu trữ SAN Loại 1. InnoDBBTREE2. Bộ nhớ/HeapHASH, BTREE3. MYISAMBTREEThí dụ
Trong ví dụ này, chúng ta sẽ tạo một bảng student và thực hiện câu lệnh CREATE INDEX trên bảng đó
Tên bảng. sinh viên
Bây giờ, hãy thực hiện câu lệnh sau để trả về kết quả của sinh viên có lớp là nhánh CS
Tuyên bố này sẽ cung cấp cho đầu ra sau
Trong bảng trên, chúng ta có thể thấy bốn hàng biểu thị các sinh viên có lớp là chi nhánh CS
Nếu bạn muốn xem cách MySQL thực hiện truy vấn này bên trong, hãy thực hiện câu lệnh sau
Bạn sẽ nhận được đầu ra dưới đây. Ở đây, MySQL quét toàn bộ bảng có bảy hàng để tìm sinh viên có lớp là nhánh CS
Bây giờ, chúng ta hãy tạo một chỉ mục cho cột lớp bằng cách sử dụng câu lệnh sau
Sau khi thực hiện câu lệnh trên, chỉ mục được tạo thành công. Bây giờ, hãy chạy câu lệnh dưới đây để xem cách MySQL thực hiện truy vấn này bên trong
Câu lệnh trên cho đầu ra, như hình bên dưới
Trong kết quả này, MySQL tìm thấy bốn hàng từ chỉ mục lớp mà không cần quét toàn bộ bảng. Do đó, nó làm tăng tốc độ truy xuất các bản ghi trên bảng cơ sở dữ liệu
Các chỉ mục được sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu nhanh hơn so với cách khác. 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 độ tìm kiếm/truy vấn
Ghi chú. Cập nhật bảng có chỉ mục mất nhiều thời gian hơn cập nhật bảng không có chỉ mục [vì chỉ mục cũng cần cập nhật]. Vì vậy, chỉ tạo các chỉ mục trên các cột sẽ được tìm kiếm thường xuyên
Cú pháp TẠO CHỈ SỐ
Tạo một chỉ mục trên một bảng. Các giá trị trùng lặp được cho phép
TẠO INDEX index_name
BẬT tên_bảng [cột1, cột2,. ];
TẠO CHỈ SỐ DUY NHẤT Cú pháp
Tạo một chỉ mục duy nhất trên một bảng. Giá trị trùng lặp không được phép
TẠO INDEX DUY NHẤT tên_chỉ mục
BẬT tên_bảng [cột1, cột2,. ];
MySQL CREATE INDEX Ví dụ
Câu lệnh SQL dưới đây tạo một chỉ mục có tên "idx_lastname" trên cột "LastName" trong bảng "Persons"
TẠO CHỈ MỤC idx_lastname
BẬT Người [Họ];
Nếu bạn muốn tạo chỉ mục trên tổ hợp cột, bạn có thể liệt kê tên cột trong dấu ngoặc đơn, phân tách bằng dấu phẩy