Bỏ qua đến nội dung chính

Index Trong SQL Là Gì? Tăng Hiệu Suất Database

Tìm hiểu index trong SQL, cách tạo, types, cách tối ưu query, tăng tốc database, mini project, portfolio và freelance/remote cho Dev.

Xuất bản 3 phút đọc
## 1. Index Trong SQL Là Gì? Index là **cấu trúc dữ liệu đặc biệt trong bảng**, giúp **tìm kiếm dữ liệu nhanh hơn**, giảm thời gian scan toàn bộ bảng. - **Ví dụ:** bảng `users` có 1 triệu dòng, tìm user bằng email nếu không có index phải scan toàn bộ → chậm - Tạo index trên cột `email` → truy vấn nhanh, gần như O(log N) thay vì O(N) **Cách hoạt động:** SQL server tạo cây B-tree hoặc Hash map để ánh xạ giá trị → row pointer. --- ## 2. Các Loại Index ### a) Primary Key Index - Được tạo tự động khi khai báo **PRIMARY KEY** - Unique + không null, đảm bảo mỗi record duy nhất - Tác dụng: truy vấn, join, tham chiếu foreign key ### b) Unique Index - Đảm bảo cột giá trị **không trùng lặp** - Ví dụ: email trong bảng users ### c) Composite Index - Index trên **nhiều cột cùng lúc** - Ví dụ: `(first_name, last_name)` → tìm kiếm cả họ + tên ### d) Full-Text Index - Tìm kiếm **văn bản**, string dài - Ví dụ: blog, product description, nội dung CMS ### e) Hash Index - Dùng cho **key-value lookup** - Ví dụ: Redis, DynamoDB ### f) Clustered / Non-Clustered - Clustered: dữ liệu thực sự sắp xếp theo index (1 bảng chỉ 1 clustered) - Non-clustered: index riêng biệt, dữ liệu không sắp xếp theo index --- ## 3. Khi Nào Nên Tạo Index - Cột thường dùng trong **WHERE** - Cột thường **JOIN** với bảng khác - Cột dùng trong **ORDER BY, GROUP BY** - Lưu ý: **không nên tạo index quá nhiều** → giảm tốc độ INSERT/UPDATE/DELETE, tăng dung lượng --- ## 4. Cách Tạo Index ### SQL cơ bản: ```sql -- Tạo index đơn CREATE INDEX idx_user_email ON users(email); -- Tạo index composite CREATE INDEX idx_user_name ON users(first_name, last_name); -- Tạo unique index CREATE UNIQUE INDEX idx_unique_email ON users(email); Drop index: DROP INDEX idx_user_email ON users; 5. Tối Ưu Query Với Index EXPLAIN PLAN: kiểm tra query sử dụng index hay không LIMIT: tránh load quá nhiều row Chọn cột phù hợp: cột truy vấn nhiều Composite index: khi filter nhiều cột Full-text index: search văn bản dài Avoid function on indexed column: tránh dùng hàm trên cột có index → bỏ qua index 6. Mini Project & Portfolio Mini project: user management, e-commerce, blog Cơ sở dữ liệu: MySQL/PostgreSQL Thực hành: tạo index cho cột email, name, created_at, optimize query Portfolio: GitHub repo + deploy demo online Freelance: áp dụng index cho khách hàng, tăng hiệu suất web/app 7. FAQ Index trong SQL là gì? Cấu trúc dữ liệu giúp tăng tốc truy vấn, tương tự mục lục sách. Có những loại index nào? Primary, Unique, Composite, Full-text, Hash, Clustered, Non-clustered. Khi nào nên tạo index? Cột thường dùng WHERE, JOIN, ORDER BY, GROUP BY. Quá nhiều index có hại không? Có, làm giảm tốc độ INSERT/UPDATE/DELETE và tăng dung lượng lưu trữ. Làm sao Dev viết query chuẩn với index? Đặt index cột phù hợp, test EXPLAIN PLAN, tránh function trên cột index, dùng composite index khi filter nhiều cột. 8. Kết Luận Index là công cụ tối ưu database quan trọng cho SQL Developer Hiểu types, cách tạo, tối ưu query giúp giảm thời gian truy vấn, tăng hiệu suất backend Thực hành mini project, GitHub, portfolio, freelance/remote → tăng kỹ năng và cơ hội việc làm Thông điệp: Viết query chuẩn + sử dụng index hiệu quả không chỉ làm database nhanh mà còn nâng cao sự nghiệp Dev lâu dài trong thời đại AI
Zalo