现在我遇到一个问题,就是group by消耗性能过大,请问下大家应该怎么优化下这个语句
例:select A from table with(Nolock) where A in(几千条数据) group by A
其中那个in 几千条由于业务需求,无法避免,我现在想要的效果就是把这几千条数据带到这张表里面去查,然后看看有哪些数据是存在,把这些存在的数据返回给我。
例:select A from table with(Nolock) where A in(几千条数据) group by A
其中那个in 几千条由于业务需求,无法避免,我现在想要的效果就是把这几千条数据带到这张表里面去查,然后看看有哪些数据是存在,把这些存在的数据返回给我。
几千条数据是程序分析的,还是数据库的,或是静态的,都可以调整为Exists查询的。如上面的SQL,使用group by的目的啊,是不是多余了。
为什么不用 distinct ? 后面再换成exist ,然后看看执行计划
1. 创建一个临时表#t,存放in里面的数据,列名为a。
2. select t1.a from table t1 left join #t t2 on t1.a=t2.a where t1.a is not null 然后针对a列加索引