如何使用单个查询检查多个ID的存在

时间:2010-04-27 16:55:39

标签: php mysql database doctrine

我正试图找到一种方法来检查数据库中是否已经存在某些ID,如果ID已存在于数据库中,我自然会尝试避免处理它所代表的行

现在我正在进行单一查询以检查ID,但我认为这太贵了,因为如果我检查20个ID,则脚本需要30秒

我知道我可以做一个简单的WHERE id = 1或id = 2或id = 3,但我想知道某些ID已经存在于数据库中且哪些不是

我对交易知之甚少,但也许这可能有用或者其他什么

任何想法都非常感谢!

2 个答案:

答案 0 :(得分:1)

取决于您如何确定“ID组”

如果您可以使用查询,则可以使用join或exists子句。

例如

SELECT firstname
  from people p 
  where not exists (select 1 from otherpeople op where op.firstname = p.firstname)

这将选择不在otherpeople表中的所有人

如果您只有一个ID列表,请使用WHERE NOT IN(1,3,4 ...)

答案 1 :(得分:1)

对单个值进行20次查询30秒是很长时间。您是否在ID字段上创建了索引以加快速度?

此外,如果您在ID字段上创建unique key,则只需插入所有ID即可。数据库将抛出错误而不插入那些已存在的ID,但您可以忽略这些错误。