Điều phổ biến nhất sẽ tạo nên một truy vấn không phân chia được là bao gồm một trường bên trong một hàm trong mệnh đề where:
SELECT ... FROM ...
WHERE Year(myDate) = 2008
Trình tối ưu hóa SQL không thể sử dụng một chỉ mục trên myDate, ngay cả khi một chỉ mục tồn tại. Theo nghĩa đen, nó sẽ phải đánh giá chức năng này cho mọi hàng của bảng. Tốt hơn nhiều để sử dụng:
WHERE myDate >= '01-01-2008' AND myDate < '01-01-2009'
Một số ví dụ khác:
Bad: Select ... WHERE isNull(FullName,'Ed Jones') = 'Ed Jones'
Fixed: Select ... WHERE ((FullName = 'Ed Jones') OR (FullName IS NULL))
Bad: Select ... WHERE SUBSTRING(DealerName,4) = 'Ford'
Fixed: Select ... WHERE DealerName Like 'Ford%'
Bad: Select ... WHERE DateDiff(mm,OrderDate,GetDate()) >= 30
Fixed: Select ... WHERE OrderDate < DateAdd(mm,-30,GetDate())