Estamos usando PostgreSQL v8.2.3.
Hay tablas involucradas: EMPLEADO y EMAILLIST .
Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)
2 tablas se unen de tal manera que si EMPLOYEE.EMAIL1 o EMPLOYEE.EMAIL2 no tienen una entrada coincidente, esas filas serán devueltas.
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 columna EMAIL
que es varchar (256) de la EMAILLIST
tabla está indexada. Ahora, el tiempo de respuesta es de 14 segundos.
Estadísticas de conteo de tablas: actualmente, el EMPLEADO tiene 165,018 registros y EMAILLIST tiene 1,810,228 registros, y se espera que ambas tablas crezcan en el futuro.
- ¿Es una buena idea / enfoque indexar una columna VARCHAR? Esta pregunta inmediatamente me llamó la atención por la razón por la que no hemos indexado una columna VARCHAR antes en nuestra aplicación. Los consejos / sugerencias de expertos sobre esto son muy apreciados.
- Con esta consulta e índice actuales, el tiempo de respuesta de 14 segundos es razonable o ¿hay alguna posibilidad de realizar más ajustes? ¿Cuál es la experiencia / opinión en tiempo real de otros usuarios basada en este tipo de tamaño de tabla y tiempo de respuesta?
NOTA: Mi requisito / caso de uso real se explica en detalle aquí .