sqlserver怎么优化group by

0
现在我遇到一个问题,就是group by消耗性能过大,请问下大家应该怎么优化下这个语句
例:select A from table with(Nolock) where    A in(几千条数据) group by A
其中那个in 几千条由于业务需求,无法避免,我现在想要的效果就是把这几千条数据带到这张表里面去查,然后看看有哪些数据是存在的。把这些存在的数据返回给我
已邀请:
0

flybi_xw - 挑战极限,人生终将辉煌。 2015-10-23 回答

你的需求,不需要group by .直接去掉。
select distinct A from table with(Nolock) where    A in(几千条数据)
还慢的话,把in 换成 join
0

- 取是能力,舍是境界 2015-10-23 回答

你这儿的性能瓶颈不见得是Group By吧,需要排查下。你试着先不分组看看执行情况。
 
A in 几千条数据,这几千条数据是子查询还是参数还是拼接的字符串,建议这儿放在一个表变量里用join关联匹配。另外A字段可以考虑加个索引。
0

gogodiy - 天善智能数据库专家、Tableau爱好者 2015-10-23 回答

通常情况下,除非IN后面的结果集非常小,否则应该使用表关联的方式来处理,这样可以有效利用到索引。IN通常会不使用索引,而是走表扫描的方式。

要回复问题请先登录注册