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.
## 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
Bài viết khác
Tối Ưu Database & Tốc Độ Web: Hướng Dẫn Chi Tiết Có Code
Tối ưu Database thực chiến: cách dùng EXPLAIN, đánh index đúng, dọn slow query, cache layer và partition. Code SQL/Node.js minh hoạ chạy được ngay.
API Security Checklist: 20 Điểm Phải Check Production
API security checklist 20 điểm: auth, rate limit, input validation, logging, CORS, headers. Cover OWASP API Top 10 cho production-ready API.
Content Security Policy (CSP): Setup Đúng Cho Web 2026
Content Security Policy CSP setup từ A-Z: nonce, hash, strict-dynamic, report-only mode, common pitfall. Defense layer mạnh chống XSS.