Index Trong SQL: Tăng Tốc Truy Vấn Gấp 100 Lần Và Những Sai Lầm Cần Tránh
Chia sẻ
"Hướng dẫn tạo và quản lý Index trong SQL — Clustered, Non-Clustered, Composite Index, khi nào nên dùng, khi nào tránh, và cách đo hiệu năng."
1. Index Là Gì?
Index trong SQL giống như mục lục của cuốn sách. Thay vì đọc từ trang 1 đến trang 1000 để tìm từ khóa (Full Table Scan), index giúp database nhảy thẳng đến vị trí cần tìm.
Kết quả? Truy vấn có thể nhanh hơn 10 đến 100 lần tùy kích thước bảng.
2. Các Loại Index
2.1. Clustered Index
-- Mỗi bảng chỉ có 1 Clustered Index
-- Dữ liệu được sắp xếp vật lý theo index này
-- Thường là Primary Key
CREATE CLUSTERED INDEX IX_Employees_ID
ON employees (id);2.2. Non-Clustered Index
-- Có thể tạo nhiều Non-Clustered Index
-- Tạo bản sao sắp xếp riêng, trỏ về dữ liệu gốc
CREATE NONCLUSTERED INDEX IX_Employees_Name
ON employees (last_name, first_name);
-- Index cho cột thường dùng trong WHERE
CREATE INDEX IX_Orders_Date
ON orders (order_date);2.3. Composite Index (Index nhiều cột)
-- Thứ tự cột quan trọng!
CREATE INDEX IX_Orders_Customer_Date
ON orders (customer_id, order_date);
-- Index này hỗ trợ:
-- ✅ WHERE customer_id = 5
-- ✅ WHERE customer_id = 5 AND order_date > '2024-01-01'
-- ❌ WHERE order_date > '2024-01-01' (không dùng được index!)3. Khi Nào Nên Tạo Index
Cột thường dùng trong WHERE clause
Cột dùng trong JOIN condition
Cột dùng trong ORDER BY
Bảng có nhiều dữ liệu (>10K rows)
Cột có selectivity cao (nhiều giá trị khác nhau)
4. Sai Lầm Thường Gặp
Tạo quá nhiều index — Mỗi index tốn không gian và làm chậm INSERT/UPDATE
Index trên cột ít phân biệt — Ví dụ: gender (chỉ có M/F) → index vô ích
Quên maintain index — Index bị fragmented theo thời gian → cần rebuild
Sai thứ tự cột trong composite index — Cột common nhất phải đứng trước
5. Đo Hiệu Năng
-- Xem execution plan
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
SELECT * FROM orders WHERE customer_id = 100;
-- Kiểm tra:
-- Logical reads: ít hơn = tốt hơn
-- Elapsed time: thời gian thực thi6. Kết Luận
Index là công cụ tối ưu hiệu năng mạnh nhất trong SQL. Nhưng dùng đúng cách quan trọng hơn dùng nhiều. Hiểu rõ data pattern, query pattern, rồi mới tạo index.
Bình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
Bài viết liên quan
Khám phá thêm các bài viết cùng chủ đề


