如果表格包含超过700,000行,则确定某个项目是否存在的性能最佳
if (Select count(id) from Registeration where email='email@w.cn') > 0
print 'Exist'
else
print 'Not Exist'
OR
if Exists(Select id from Registeration where email='email@w.cn')
print 'Exist'
else
print 'Not Exist'
答案 0 :(得分:28)
EXISTS,总是
编辑,要清楚
当然,在这种情况下,如果电子邮件列是唯一的并且已建立索引,则它将会关闭。
通常,EXISTS将使用更少的资源,也更正确。你正在寻找存在的行,而不是“大于零”,即使它们是相同的
Edit2:在EXISTS中,你可以使用NULL,1,ID,甚至是1/0:它没有被检查......
2011年5月21日编辑:
看起来这在SQL Server 2005+中进行了优化,因此在这种情况下COUNT现在与EXISTS相同
答案 1 :(得分:4)
还考虑到Count()只返回int,如果你计算一些超过int的数据会产生错误