Questions tagged «exists»

4
使用LEFT JOIN或NOT EXISTS之间的最佳实践
在使用LEFT JOIN或NOT EXISTS格式之间有最佳实践吗? 相对于另一个使用什么有什么好处? 如果没有,则应首选? SELECT * FROM tableA A LEFT JOIN tableB B ON A.idx = B.idx WHERE B.idx IS NULL SELECT * FROM tableA A WHERE NOT EXISTS (SELECT idx FROM tableB B WHERE B.idx = A.idx) 我在Access中使用SQL Server数据库查询。

2
如果EXISTS花费的时间比嵌入的select语句长
当我运行以下代码时,需要22.5分钟的时间,并且需要进行1.06亿次读取。但是,如果我自己仅运行内部select语句,则只需15秒即可完成264k次读取。附带说明,select查询不返回任何记录。 知道为什么IF EXISTS它会使它运行更长的时间并进行更多的读取吗?我也将select语句更改为do,SELECT TOP 1 [dlc].[id]并在2分钟后将其杀死。 作为临时解决方案,我将其更改为执行count(*)并将该值分配给变量@cnt。然后它做一个IF 0 <> @cnt声明。但是我认为EXISTS会更好,因为如果select语句中返回了记录,则一旦找到至少一条记录,它将停止执行扫描/查找,而count(*)将会完成整个查询。我想念什么? IF EXISTS (SELECT [dlc].[ID] FROM TableDLC [dlc] JOIN TableD [d] ON [d].[ID] = [dlc].[ID] JOIN TableC [c] ON [c].[ID] = [d].[ID2] WHERE [c].[Name] <> [dlc].[Name]) BEGIN <do something> END

3
在IF EXISTS中包装查询会使它非常慢
我有以下查询: select databasename from somedb.dbo.bigtable l where databasename ='someval' and source <>'kt' and not exists(select 1 from dbo.smalltable c where c.source=l.source) 上面的查询将在三秒钟内完成。 如果上面的查询返回任何值,我们希望存储过程为EXIT,因此我将其重写如下: If Exists( select databasename from somedb.dbo.bigtable l where databasename ='someval' and source <>'kt' and not exists(select 1 from dbo.smalltable c where c.source=l.source) ) Begin Raiserror('Source missing',16,1) Return …

1
SQL规范是否要求EXISTS()中的GROUP BY
Microsoft当前允许使用此语法。 SELECT * FROM ( VALUES (1) ) AS g(x) WHERE EXISTS ( SELECT * FROM ( VALUES (1),(1) ) AS t(x) WHERE g.x = t.x HAVING count(*) > 1 ); 请注意,GROUP BY该EXISTS子句中没有有效的ANSI SQL。还是仅公开实现细节。 作为参考,PostgreSQL不允许使用相同的语法。 错误:“ tx”列必须出现在GROUP BY子句中或在聚合函数中使用 但是允许使用此语法。 SELECT * FROM ( VALUES (1) ) AS g(x) WHERE EXISTS …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.