Các trường hợp index sẽ không được sử dụng dù đã được tạo trong SQL Server Index là một kỹ thuật giúp tăng hiệu suất tìm kiếm, thực thi câu lệnh sql trong SQL Server. Tuy nhiên không phải lúc nào index đều được sử dụng mặc dù đã được tạo. Index (hay chỉ mục) là một cấu trúc dữ liệu để tăng hiệu suất truy vấn của cơ sở dữ liệu. Index cho phép cơ sở dữ liệu thực hiện một số câu truy vấn có điều kiện nhanh hơn so với thông thường. Tuy nhiên index cũng được lưu trên bộ nhớ và tiêu tốn không gian bộ nhớ và thời gian để tạo, cập nhật index nên khi sử dụng index cần phải suy xét kĩ. Dưới đây là những trường hợp phổ biến khiến index không được sử dụng trong SQL Server, dù bạn đã tạo: 1. Không khớp điều kiện truy vấn (WHERE) Ví dụ: Bạn có index trên CustomerID, nhưng truy vấn lại lọc theo ProductID: -- Index không được dùng SELECT * FROM Orders WHERE ProductID = 456; 2. Sử dụng hàm trên cột được index -- Index trên OrderDate sẽ không được dùng SELECT * FROM Orders WHERE YEAR(OrderDate) = 2025; Vì SQL Server không thể dùng index khi cột bị bao bởi hàm nên viết lại như sau: SELECT * FROM Orders WHERE OrderDate >= '2023-01-01' AND OrderDate < '2024-01-01'; 3. Dữ liệu quá nhỏ hoặc truy vấn trả về quá nhiều dòng - SQL Server có thể bỏ qua index nếu thấy quét toàn bộ bảng (table scan) nhanh hơn. - Ví dụ: bảng chỉ có vài trăm dòng thì index không cần thiết. 4. Không đúng thứ tự cột trong composite index -- Index: (CustomerID, ProductID) -- Truy vấn chỉ lọc theo ProductID → không dùng được index SELECT * FROM Orders WHERE ProductID = 456; => Composite index chỉ hiệu quả nếu truy vấn bắt đầu từ cột đầu tiên trong index. 5. Sử dụng toán tử không hỗ trợ index tốt Ví dụ: LIKE '%abc' hoặc NOT IN, <>, OR có thể khiến SQL Server không dùng index. -- Index không được dùng SELECT * FROM Customers WHERE CustomerName LIKE '%Shop'; 6. Thống kê (statistics) không được cập nhật - SQL Server dựa vào thống kê để quyết định có dùng index hay không. - Nếu thống kê cũ → SQL Server có thể chọn sai kế hoạch thực thi. Giải pháp: UPDATE STATISTICS Orders; 7. Index bị vô hiệu hóa hoặc chưa được rebuild Sau khi tạo index, nếu bạn dùng DISABLE, SQL Server sẽ không dùng được index đó. Như vậy qua bài viết này Stanford đã giúp các bạn học sql hiểu hơn các trường hợp index không được sử dụng dù đã được tạo trong SQL Server. Đây là kiến thức quan trọng quyết định bạn sử dụng index được hiệu quả nhất trên SQL Server. Bên cạnh đó nếu bạn đang muốn được đào tạo bài bản từ cơ bản đến nâng cao có thể tham gia ngay khóa học sql cùng chuyên gia giàu kinh nghiệm Stanford tại đây: http://bit.ly/2SLPYFF và nhận ưu đãi hấp dẫn của Stanford trong thời gian này. Bạn có thể gọi theo hotline: 0963 723 236 - 0866 586 366 để được gọi lại tư vấn trực tiếp nhé. ============================= ☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: 0963 723 236 - 0866 586 366 Website: https://stanford.com.vn Facebook: http://bit.ly/2FN0TYb Youtube: http://bit.ly/2TkKT7I Tags: các trường hợp không dùng index, index trong sql server