Tôi có một truy vấn SQL rất đơn giản:COUNT địa chỉ postgresql (DISTINCT ...) rất chậm
SELECT COUNT(DISTINCT x) FROM table;
bảng của tôi có khoảng 1,5 triệu hàng. Truy vấn này chạy khá chậm; phải mất khoảng 7,5s, so với
SELECT COUNT(x) FROM table;
mất khoảng 435ms. Có cách nào để thay đổi truy vấn của tôi để cải thiện hiệu suất không? Tôi đã cố gắng nhóm và thực hiện một số thường xuyên, cũng như đặt một chỉ mục trên x; cả hai đều có cùng thời gian thực hiện 7,5 giây.
Tôi không nghĩ như vậy. Nhận được các giá trị khác biệt của 1,5 triệu hàng chỉ là chậm. – Ryan
Tôi đã thử nó trong C#, nhận được các giá trị riêng biệt của 1,5 triệu * số nguyên từ bộ nhớ * mất hơn một giây trên máy tính của tôi. Vì vậy, tôi nghĩ rằng bạn có thể không may mắn. – Ryan
Kế hoạch truy vấn sẽ phụ thuộc rất nhiều vào cấu trúc bảng (chỉ mục) và thiết lập hằng số điều chỉnh (công việc) mem, effective_cache_size, random_page_cost). Với việc điều chỉnh hợp lý, truy vấn có thể được thực hiện trong chưa đến một giây. – wildplasser