如果有人能解释我在TSQL中遇到count distinct
时遇到的巨大性能差异,我会很感激。我有一个包含以下列的表:
我想要的是item_price,item_quantity,item_code级别的用户数量,按国家/地区的总和。因此,以下查询:
SELECT country_code
,item_code
,TotalSales = SUM (item_price)
,TotalPurchase = SUM (item_quantity)
,UniqueBuyer = COUNT (DISTINCT user_no)
FROM TABLE_SALES WITH (NOLOCK)
GROUP BY item_code, country_code
ORDER BY country_code, item_code
查询极其缓慢,并且在1.5小时内没有完成。但是,当我分解查询并分别运行sum
和count distinct
部分时,每个部分都花了不到一分钟。
所以我想知道为什么count distinct
在组合中增加了如此巨大的负担,而它本身并不是什么大不了的事情?鉴于这种情况,有没有更好的方法来完全处理查询?
提前感谢您的帮助!