在大数据查询的时候,或者查询字段比较多的时候,应该尽量少用distinct , 特别是在最外层不要试使用。因为distinct 会对查询的结果进行排序,致使查询比较慢。这时候应该选用group by的方式,通过对指定字段进行分组,然后在进行count()统计就可以了。
例如:
我要统计统计期末的数据:数据大概有几百万的数据。
sql :
select count(distinct lc.grpcontno) from lcpol lc
where lc.grpcontno in( **********);
这个语句我查询数据将近一天,都没有查询出结果。
这时候选用
select count(1) from ( select lc.grpcontno from lcpol lc where lc.grpcontno in( **********) group by lc.grpcontno)
查询时间不到30秒就出来结果了。
当然适当的时候选用distinct 也会起到优化的效果。这个要根据自己的实际需求来判断。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
文章评论