我不是 dba,但我正在尝试为视图创建一个有效的查询,该查询将在表上返回一些总计
select
(select count(1) from alerts) as Total,
(select count(1) from alerts where iscomplete is null or iscomplete = 0) as Active,
(select count(1) from alerts where iscomplete = 1) as Complete
Run Code Online (Sandbox Code Playgroud)
使用CASE
以便只需要一次完整扫描。iscomplete 上的非聚集索引将覆盖此查询。
SELECT
COUNT(1) AS Total
, SUM(CASE WHEN iscomplete is null or iscomplete = 0 THEN 1 ELSE 0 END) AS Active
, SUM(CASE WHEN iscomplete = 1 THEN 1 ELSE 0 END) AS Complete
FROM dbo.alerts;
Run Code Online (Sandbox Code Playgroud)