Nous utilisons PostgreSQL v8.2.3.
Il y a des tables impliquées: EMPLOYEE et EMAILLIST .
Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)
Deux tables sont jointes de manière à ce que si EMPLOYEE.EMAIL1 ou EMPLOYEE.EMAIL2 ne possède pas d'entrée correspondante, ces lignes sont renvoyées.
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
La colonne EMAIL
qui est varchar (256) de la EMAILLIST
table est indexée. Le temps de réponse est maintenant de 14 secondes.
Statistiques sur le nombre de tables: EMPLOYEE compte actuellement 165 018 enregistrements et EMAILLIST, 1 810 228 enregistrements, et les deux tableaux devraient augmenter à l'avenir.
- Est-ce une bonne idée / approche d'indexer une colonne VARCHAR? Cette question me préoccupe immédiatement parce que nous n’avons jamais indexé une colonne VARCHAR dans notre application. Les avis / suggestions des experts à ce sujet sont très appréciés.
- Avec cette requête et cet index actuels, le temps de réponse de 14 secondes est raisonnable ou existe-t-il une possibilité de réglage supplémentaire? Quelles sont l'expérience / l'opinion en temps réel d'autres utilisateurs basée sur ce type de taille de table et de temps de réponse?
REMARQUE: Mon besoin actuel / mon cas d'utilisation est expliqué en détail ici .