Index trong database
Index trong database là một cấu trúc dữ liệu đặc biệt giúp database tìm các records nhanh hơn mà không cần phải đọc toàn bộ records trong table.
Cứ tưởng tượng như mục lục theo kí tự theo bảng chữ cái ở cuối quyển từ điển. Thay vì lật từng trang để tìm xem từ vựng gần tra, ta có thể nhìn vào mục lục để lật tới chính xác trang chứa nó.
Thứ nhất, DB Engine sẽ kiểm tra column trong WHERE condition có được đánh index không. Nếu có, nó chỉ lấy column được index để thực hiện scan trên index table thay vì scan trên table chính, giảm lượng data phải read từ disk.
Thứ hai, index table được sắp xếp nên việc scan trở nên đơn giản hơn. Thay vì scan toàn bộ, sử dụng cấu trúc Binary Tree để tiến hành scan.
Common Types of Indexes
Primary Index: Được tự động tạo bởi database cho primary key để đảm bảo tốc độ tìm kiếm cho các rows cụ thể.
Secondary / Non-clustered Index: Chúng ta sẽ cần tạo cho các cột không phải là primary key, đây là những cột mà ta thường xuyên sử dụng để tìm kiếm như
email,last_name,phone_number,...Clustered Index: Sắp xếp lại các rows data theo column được index.
B-Tree Index (Balanced Tree Index)
Sử dụng khi cột có các giá trị gần như không lặp lại.
Tự cân bằng khi dữ liệu column index thay đổi.
Độ phức tạp bằng chiều cao của cây.
Phù hợp với ORDER BY.
Không có tác dụng khi tìm kiếm text sử dụng điều kiện LIKE '%%';
Với composite index, WHERE condition cần match full value hoặc match mostleft column để đạt hiệu quả.