【发布时间】:2022-01-03 14:25:56
【问题描述】:
有这样的查询:
IF EXISTS(SELECT * FROM [MyTable] WHERE Property=1)
BEGIN
SELECT * FROM [MyTable] WHERE Property=1
END
else
begin
SELECT * FROM [MyTable] WHERE Property= (SELECT Property FROM [OtherTable] where OtherProperty = 1)
end
是否可以修改它以不进行两次相同的选择?
【问题讨论】:
-
这取决于,第二个
SELECT的WHERE是什么?尽管使用正确的索引,像上面这样的东西可以提高性能。 -
@Larnu 这是从其他表中的子选择,我已将详细信息添加到问题中
-
如果您关心性能,那么您可以在 Exists 语句中使用“Select top 1 1 From”而不是“Select * From”。
-
@AntonGrig 至少在 MS SQL Server 中,在
EXISTS查询中使用TOP没有区别。在EXISTS查询中使用SELECT 1和SELECT *也没有区别。 -
@Richard 认为确实如此。感谢您的评论,现在我已经填补了这个空白。
标签: sql-server select sql-server-2012 exists