以下三个SQL语句的性能是否有任何差异?
SELECT * FROM tableA WHERE EXISTS (SELECT * FROM tableB WHERE tableA.x = tableB.y)
SELECT * FROM tableA WHERE EXISTS (SELECT y FROM tableB WHERE tableA.x = tableB.y)
SELECT * FROM tableA WHERE EXISTS (SELECT 1 FROM tableB WHERE tableA.x = tableB.y)
Run Code Online (Sandbox Code Playgroud)
它们都应该工作并返回相同的结果集.但是如果内部SELECT选择tableB的所有字段,一个字段或只是一个常量,这是否重要?
当所有陈述行为相同时,是否有最佳做法?
如果表格包含超过700,000行,则确定项目是否存在的性能最佳
if (Select count(id) from Registeration where email='email@w.cn') > 0
print 'Exist'
else
print 'Not Exist'
Run Code Online (Sandbox Code Playgroud)
要么
if Exists(Select id from Registeration where email='email@w.cn')
print 'Exist'
else
print 'Not Exist'
Run Code Online (Sandbox Code Playgroud)