Tôi đang làm việc để tạo báo cáo cho dữ liệu chứa trong cơ sở dữ liệu Access trước lớn (~ 500 mb sau khi sửa chữa nhỏ gọn &) và tôi gặp sự cố với truy vấn con chậm .Truy vấn phụ rất chậm khi sử dụng "KHÔNG IN"
Cơ sở dữ liệu có bảng lớn chứa bản ghi về mọi giao dịch mua của khách hàng. Đây là một truy vấn đơn giản tìm thấy những khách hàng đã mua một tiện ích màu xanh lam. Nó hoàn thành trong vòng vài giây và trả về khoảng mười nghìn bản ghi.
SELECT DISTINCT CustomerId
FROM ProductSales
WHERE Product = 'BLUE'
Đây là truy vấn cố gắng tìm khách hàng đã mua tiện ích con màu xanh, chứ không phải tiện ích con màu đỏ. Phải mất khoảng một giờ để chạy.
SELECT DISTINCT CustomerId FROM ProductSales
WHERE Product = 'BLUE'
AND CustomerId NOT IN (
SELECT CustomerId
FROM ProductSales
WHERE Product = 'RED'
)
Có cách nào để cấu trúc lại truy vấn thứ hai để mất vài phút thay vì một giờ không?
Tôi giả sử trường CustomerId có chỉ mục trên nó trong cả hai bảng? –
Bạn đã thử SELECT DISTINCT CustomerId FROM ProductSales WHERE Product = 'BLUE' trừ SELECT CustomerId FROM ProductSales WHERE Product = 'RED'. Tôi đã nhìn thấy các trường hợp nó thực sự đẩy nhanh truy vấn, nhưng YMMV –
@Marc B: Chỉ có một bảng ở đây, nhưng CustomerId được lập chỉ mục trên đó. – James