因此,假设我正在构建该联系人管理系统。有一个USER表和一个CONTACT_INFO表。 对于每个USER,我可以有零个或多个CONTACT_INFO记录。按照我定义它的方式,我在CONTACT_INFO表中设置了一个外键以指向相关的USER记录。创建最佳查询来查找仅在一个表中的记录
我想要搜索所有没有CONTACT_INFO记录的USER记录。
我希望可以这样做:
SELECT * FROM user u WHERE u.user_id NOT IN (SELECT DISTINCT c.user_id FROM CONTACT_INFO);
我担心的是,随着表增长,这个查询的性能可以显著降低。
我在玩的一个想法是在USER表中添加一列,表明它是否有任何CONTACT_INFO记录。另外,我想知道,如果在向CONTACT_INFO中插入任何记录时,DBMS必须验证记录是否存在,那么为了验证和更新它,已经访问该记录,当我更新CONTACT_INFO记录时不应该成本高昂,性能明智。
一如既往,赞赏反馈。
您应该尝试下面的几个选项,然后确定每个选项的查询计划和性能,并选择最好的一个。 – 2009-06-16 16:51:26
我们在谈论哪些DBMS? – AakashM 2009-06-16 16:55:07