Kami menggunakan PostgreSQL v8.2.3.
Ada tabel yang terlibat: EMPLOYEE dan EMAILLIST .
Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)
2 tabel digabungkan sedemikian rupa sehingga jika EMPLOYEE.EMAIL1 atau EMPLOYEE.EMAIL2 tidak memiliki entri yang cocok, baris-baris itu akan dikembalikan.
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
Kolom EMAIL
yang merupakan varchar (256) dari EMAILLIST
tabel diindeks. Sekarang, waktu respons adalah 14 detik.
Statistik jumlah tabel: Saat ini, EMPLOYEE telah mendapatkan 165.018 catatan & EMAILLIST telah mendapatkan 1.810.228 catatan, dan kedua tabel diharapkan akan tumbuh di masa mendatang.
- Apakah itu ide / pendekatan yang baik untuk mengindeks kolom VARCHAR? Pertanyaan ini segera muncul di benak saya karena alasan kami belum mengindeks kolom VARCHAR sebelumnya di aplikasi kami. Saran / saran ahli tentang hal ini sangat dihargai.
- Dengan kueri dan indeks saat ini, waktu respons 14 detik masuk akal atau apakah ada ruang untuk penyetelan lebih lanjut? Apa pengalaman / pendapat real-time pengguna lain berdasarkan pada ukuran tabel dan waktu respons seperti ini?
CATATAN: Persyaratan / kasus penggunaan aktual saya dijelaskan secara rinci di sini .