? ? ?在大数据查询的时候,或者查询字段比较多的时候,应该尽量少用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 也会起到优化的效果。这个要根据自己的实际需求来判断。