任何人都可以在没有明确条款的情况下帮助我重写此查询吗?
select
a.rec_type ,
count(distinct a.a_tel_id) as count_distinct,
a.time_key as hour
from v_f_view as a with (nolock)
group by rec_type,time_key
我对执行计划感到愤怒,这个查询花了太长时间,我想优化它。
答案 0 :(得分:2)
您是否将rec_type,time_key
索引为关键字?这是必须的。
答案 1 :(得分:2)
如果a_tel_id有重复并且您想将它们统计为一个,那么您无法以某种方式神奇地删除不同来优化它。
您可能会尝试在分组的列上添加索引。
答案 2 :(得分:2)
您的问题不是DISTINCT
子句,而是缺少索引。 DISTINCT
子句可以替换为两个GROUP BY
子句,但这很可能会遭受相同的性能损失。
SELECT a.rec_type
, COUNT(*) as count_distinct
, a.time_key as hour
FROM (
SELECT a.rec_type
, a.a_tel_id
, a.time_key
FROM v_f_Logicacdrs21 a
GROUP BY
a.rec_type
, a.a_tel_id
, a.time_key
) a
GROUP BY
a.rec_type
, a.time_key