这个查询可以改进吗?查看表格上的几个计数总计

Zoi*_*nky 0 sql-server

我不是 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)

Dan*_*man 6

使用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)