Index Trong Cơ Sở Dữ Liệu Quan Hệ
Index database là gì?
Index là một cấu trúc dữ liệu được dùng để định vị và truy cập nhanh nhất vào dữ liệu trong các bảng databaseIndex là một cách tối ưu hiệu suất truy vấn database bằng việc giảm lượng truy cập vào bộ nhớ khi thực hiện truy vấn
Index database để làm gì?
Giả sử ta có một bảng User lưu thông tin của người dùng, ta muốn lấy ra thông tin của người dùng có trường tên (Name) là “HauNguyen” .
Bạn đang xem: Index trong cơ sở dữ liệu quan hệ
Ta có truy vấn SQL sau:SELECT * FROM User WHERE Name = “HauNguyen”;
Khi không có Index cho cột Name, truy vấn sẽ phải chạy qua tất cả các Row của bảng User để so sánh và lấy ra những Row thỏa mãn. Vì vậy, khi số lượng bản ghi lớn, việc này thực sự là ác mộng
Index được sinh ra để giải quyết vấn đề này. Nói đơn giản, index trỏ tới địa chỉ dữ liệu trong một bảng, giống như Mục lục của một cuốn sách (Gồm tên đề mục và số trang), nó giúp truy vấn trở nên nhanh chóng như việc bạn xem mục lục và tìm đúng trang cần đọc vậy
Một số loại Index Database
1. B-Tree
Là kiểu dữ liệu phổ biến nhất cho IndexDữ liệu index trong B-Tree được tổ chức và lưu trữ theo dạng tree, tức là có root, branch, leaf.Ý tưởng chung của B-Tree là lưu trữ các giá trị được sắp xếp, mỗi leaf node có độ cao bằng nhau tính từ gốc. B-Tree có thể tăng tốc truy vấn vì storage engine không cần tìm toàn bộ bản ghi của bảng. Thay vào đó, nó sẽ tìm từ node root, root sẽ chứa con trỏ tới node con, storeage engine sẽ dựa vào con trỏ đó. Nó tìm đúng con trỏ bằng cách xét giá trị của node pages, nơi chứa khoảng giá trị của các node con.
Xem thêm: Bảng Ngọc Và Cách Lên Đồ Akali Mid Mùa 10 Mới Nhất, Lên Đồ Akali
Cuối cùng, storage engine chỉ ra rằng giá trị không tồn tại hoặc tìm được giá trị ở leaf node.B-Tree index được sử dụng trong các biểu thức so sánh dạng: =, >, >=, B-Tree index được sử dụng cho những column trong bảng khi muốn tìm kiếm 1 giá trị nằm trong khoảng nào đó
2.Hash IndexDữ liệu index được tổ chức theo dạng Key – Value được liên kết với nhau.Khác với B-Tree, thì Hash index chỉ nên sử dụng trong các biểu thức toán tử là = và . Không sử dụng cho toán từ tìm kiếm 1 khoảng giá trị như > hay Không thể tối ưu hóa toán tử ORDER BY bằng việc sử dụng Hash index bởi vì nó không thể tìm kiếm được phần từ tiếp theo trong Order.Toàn bộ nội dung của Key được sử dụng để tìm kiếm giá trị records, khác với B-Tree một phần của node cũng có thể được sử dụng để tìm kiếm.Hash có tốc độ nhanh hơn kiểu Btree.
Dùng Index Database thế nào cho hiệu quả?
Dù Index đóng vai trò quan trọng trong việc tối ưu truy vấn và tăng tốc độ tìm kiếm trong Database nhưng nhược điểm của nó là tốn thêm bộ nhớ để lưu trữ. Do vậy, việc Index cho các cột phải được tính toán, tránh lạm dụng.Dưới đây là một số Tips giúp bạn tạo Database index hiệu quả hơn:Nên Index những cột được dùng trong WHERE, JOIN và ORDER BYDùng chức năng index prefix” or “multi-columns index” của MySQL. Vd: Nếu bạn tạo Index(first_name, last_name) thì k cần tạo Index(first_name)Dùng thuộc tính NOT NULL cho những cột được IndexKhông dùng Index cho các bảng thường xuyên có UPDATE, INSERTKhông dùng Index cho các cột mà giá trị thường xuyên bị thay đổi
Một số lệnh Index Database
Create Index trong SQL:
CREATE INDEX ten_chi_muc ON ten_bang;
Single-Column Index trong SQL:Chỉ mục cho một cột đơn là một chỉ mục được tạo dựa trên chỉ một cột trong bảng. Cú pháp cơ bản là:
CREATE INDEX ten_chi_muc ON ten_bang (ten_cot);
Unique index trong SQLUnique index được sử dụng không chỉ để tăng hiệu suất, mà còn cho mục đích toàn vẹn dữ liệu. Một Unique index không cho phép bất kỳ bản sao giá trị nào được chèn vào trong bảng. Cú pháp cơ bản là:
CREATE UNIQUE INDEX ten_chi_muc ON ten_bang (ten_cot);
Composite Index trong SQLComposite Index là một chỉ mục cho hai hoặc nhiều cột trong một bảng. Cú pháp cơ bản của nó như sau:
CREATE INDEX ten_chi_muc ON ten_bang (cot1, cot2);
Implicit Index trong SQLImplicit Index (có thể hiểu là chỉ mục ngầm định) là chỉ mục mà được tạo tự động bởi Database Server khi một đối tượng được tạo. Các chỉ mục được tạo tự động cho các ràng buộc Primary key và các ràng buộc UniqueDROP INDEX trong SQL
DROP INDEX ten_chi_muc;