我们正在使用PostgreSQL v8.2.3。
有涉及的表:EMPLOYEE和EMAILLIST。
Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)
2个表以这种方式连接,如果EMPLOYEE.EMAIL1或EMPLOYEE.EMAIL2没有匹配的条目,则将返回这些行。
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
列EMAIL
是VARCHAR(256)的EMAILLIST
表索引。现在,响应时间为14秒。
表格计数统计信息:目前,EMPLOYEE已获得165,018条记录,而EMAILLIST已获得1,810,228条记录,并且这两张表都有望在未来增长。
- 索引VARCHAR列是一个好主意/方法吗?由于我们在应用程序中之前未对VARCHAR列进行索引,因此我立即想到了这个问题。非常感谢专家对此的建议/建议。
- 使用当前的查询和索引,14秒的响应时间是合理的还是有进一步调整的余地?根据这种表的大小和响应时间,其他用户的实时体验/意见是什么?
注意:我的实际需求/用例在这里详细说明。