Chúng tôi đang sử dụng PostgreSQL v8.2.3.
Có các bảng liên quan: NHÂN VIÊN và EMAILLIST .
Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)
2 bảng được nối theo cách mà nếu EMPLOYEE.EMAIL1 hoặc EMPLOYEE.EMAIL2 không có mục phù hợp, các hàng đó sẽ được trả về.
SELECT employee.email1, employee.email2,
e1.email IS NOT NULL AS email1_matched, e2.email IS NOT NULL AS email2_matched
FROM employee
LEFT JOIN emaillist e1 ON e1.email = employee.email1
LEFT JOIN emaillist e2 ON e2.email = employee.email2
WHERE e1.email IS NULL OR e2.email IS NULL
Cột EMAIL
là varchar (256) của EMAILLIST
bảng được lập chỉ mục. Bây giờ, thời gian phản hồi là 14 giây.
Thống kê số lượng bảng: Hiện tại, NHÂN VIÊN đã có 165.018 hồ sơ và EMAILLIST đã có 1.810.228 hồ sơ và cả hai bảng dự kiến sẽ tăng trong tương lai.
- Đây có phải là một ý tưởng / cách tiếp cận tốt để lập chỉ mục cột VARCHAR không? Câu hỏi này ngay lập tức xuất hiện trong đầu tôi vì lý do chúng tôi chưa lập chỉ mục cột VARCHAR trước đây trong ứng dụng của chúng tôi. Các chuyên gia tư vấn / đề nghị về điều này được đánh giá cao.
- Với truy vấn và chỉ mục hiện tại này, thời gian phản hồi 14 giây là hợp lý hoặc có phạm vi nào để điều chỉnh thêm không? Kinh nghiệm / ý kiến thời gian thực của người dùng khác dựa trên loại kích thước bảng và thời gian phản hồi này là gì?
LƯU Ý: Yêu cầu thực tế / trường hợp sử dụng của tôi được giải thích chi tiết ở đây .