在阅读一些与SQL调优相关的文档时,我发现了以下内容:
SELECT COUNT(*)
:
SELECT COUNT(*)
真的那么糟糕吗?
验证记录存在的正确方法是什么?
发布于 2010-11-23 16:23:56
最好使用以下两种方法之一:
-- Method 1.
SELECT 1
FROM table_name
WHERE unique_key = value;
-- Method 2.
SELECT COUNT(1)
FROM table_name
WHERE unique_key = value;
第一个选择应该是没有结果或一个结果,第二个计数应该是0或1。
您使用的文档有多老?尽管您已经阅读了很好的建议,但最新的关系型数据库中的大多数查询优化器都会优化SELECT COUNT(*)
,所以尽管在理论上(和较旧的数据库)存在差异,但在实践中您应该不会注意到任何差异。
发布于 2010-11-23 16:20:51
我希望根本不使用Count函数:
IF [NOT] EXISTS ( SELECT 1 FROM MyTable WHERE ... )
<do smth>
例如,如果您想在将用户插入数据库之前检查用户是否存在,则查询可能如下所示:
IF NOT EXISTS ( SELECT 1 FROM Users WHERE FirstName = 'John' AND LastName = 'Smith' )
BEGIN
INSERT INTO Users (FirstName, LastName) VALUES ('John', 'Smith')
END
发布于 2010-11-23 16:20:19
您可以使用:
SELECT 1 FROM MyTable WHERE <MyCondition>
如果没有符合条件的记录,则结果记录集为空。
https://stackoverflow.com/questions/4253960
复制相似问题