什么是最好的检查项目是否存在:select计数(ID)或存在(…)?

如果一个项目存在或不存在,特别是如果该表格包含超过700,000行,则performance最好的是什么?

if (Select count(id) from Registeration where email='email@w.cn') > 0 print 'Exist' else print 'Not Exist' 

要么

 if Exists(Select id from Registeration where email='email@w.cn') print 'Exist' else print 'Not Exist' 

总是存在

  • COUNT会遍历表或索引:您要求inputCOUNT
  • 一旦发现一行,EXISTS就会停止

编辑,要清楚

当然,在这种情况下,如果电子邮件列是独一无二的并且编入索引,它将会很接近。

一般来说,EXISTS将会使用更less的资源,更加正确。 你正在寻找一个行的存在,而不是“超过零”,即使他们是相同的

编辑2:在EXISTS中,您可以使用NULL,1,ID或甚至1/0:它不检查…

2011年5月21日编辑:

它看起来像在SQL Server 2005+中进行了优化,所以在这种情况下,COUNT现在与EXISTS相同

还要考虑到Count()只返回int,如果你计算一些超过int的数据,将会产生错误