目前要对一个几亿条纪录的大表进行统计人数查询,为了防止查询重复,需要用到distinct,但是效率极低,不有没有什么替代的方法,请大家帮帮忙
------解决方案--------------------------------------------------------
察看执行计划,看那个地方效率低。
可以用group by 代替distinct,进行测试一下,估计group by 的效率更低。
或者把sql那出来看看。
------解决方案--------------------------------------------------------
distinct 效率却是很低,不是一般的低
------解决方案--------------------------------------------------------
先把符合的查出来,然后在进行统计
select count(disctinct RYBM) from( select SJYF as RYBM from TableName where SJYF> = 'xxxx-xx-xx 'and SJYF <= 'xxx-xx-xx ')
这样看看是否可以。
或者建立汇总表。
------解决方案--------------------------------------------------------
调整一下sortheap参数,再试试