在阅读一些与SQL调优相关的文档时,我发现:
SELECT COUNT(*)
:
- 计算行数.
- 通常不正确地用于验证记录的存在.
SELECT COUNT(*)
真的那么糟糕吗?
验证记录存在的正确方法是什么?
在阅读一些与SQL调优相关的文档时,我发现:
SELECT COUNT(*)
:
SELECT COUNT(*)
真的那么糟糕吗?
验证记录存在的正确方法是什么?
最好使用以下任一选项:
-- Method 1.
SELECT 1
FROM table_name
WHERE unique_key = value;
-- Method 2.
SELECT COUNT(1)
FROM table_name
WHERE unique_key = value;
第一个选项应该不会给出结果或一个结果,第二个计数应该是零或一.
您使用的文档有多旧?尽管您已经阅读了好的建议,但最近的RDBMS的optimize SELECT COUNT(*)
中的大多数查询优化器仍然存在差异,因此尽管在理论上(和较旧的数据库)存在差异,但您不应该注意到实践中的任何差异.