VB如何取字段中间部分相同的进行group by多个字段

难点:一个routineId对应多个part需先将part合並,再分组

}

假设存在3个区有三种注册类型,想查询出来的预想结果为

如果通过SQL查询出这样的结果呢



如果实际业务中是编码表+数据表(前面给的表)应该是数据表先直接GROUP BY



我验证了┅下上面的确实能查出想要的数据但不是依据表查出来的




如果实际业务中是编码表+数据表(前面给的表),应该是数据表先直接GROUP BY

我也觉得實际业务中应该是这样或者没有的话,也应该按照这个思路先select distinct出临时的编码表,再外关联别人阅读SQL时会好理解一点

匿名用户不能发表回复!
}

如何提高group by多个字段分组查询效率 [問题点数:60分结帖人uging]

最近工作中遇到一个性能问题,自己搞了好久还是没搞定拿到论坛上来,希望各位大虾给点意见

因为数据量比較大,所以这条SQL效率就变得特别慢而且这个是用在页面查询上的,分页后每次查询都要花到8到9秒钟页面卡死在那边,希望高手们帮小弚解答小弟这边先谢过了。

你确定你这条语句能执行?不在聚集函数中的列,全部要出现在group by语句中你现在的group by 中少了C,D两列,报错了吧

针对此SQL语句可在C、D字段建索引,A、B建组合索引

建索引然后尽可能的过滤掉不符合条件的数据,然后再分组

你确定你这条语句能执行?不在聚集函数中的列,全部要出现在group by语句中你现在的group by 中少了C,D两列,报错了吧

你说的对我只是举个例子,实际的SQL比较复杂就没有貼出来

但是假设SQL是正确的该怎么优化呢?实际的需求是按几个字段分组然后统计出分组中每条记录的条数,该怎么实现

针对此SQL语句,可在C、D字段建索引A、B建组合索引

这个我已经试过了,加索引效果甚微查询效果还是一样的慢。

建索引然后尽可能的过滤掉不符合條件的数据,然后再分组

下面是实际用到的SQL请帮我看一下,索引什么的已经加过了没多大效果


建索引,然后尽可能的过滤掉不符合条件的数据然后再分组

你这样的sql不能执行吧。 除了group by的列 其它选择的列必须要有统计函数的吧,类似于sumaverage之类的


建索引,然后尽可能的过濾掉不符合条件的数据然后再分组

你这样的sql不能执行吧。 除了group by的列 其它选择的列必须要有统计函数的吧,类似于sumaverage之类的

可以执行的,效率比较差


针对此SQL语句可在C、D字段建索引,A、B建组合索引

这个我已经试过了加索引效果甚微,查询效果还是一样的慢

针对此SQL语句,可在C、D字段建索引A、B建组合索引
这个我已经试过了,加索引效果甚微查询效果还是一样的慢。

像这样 内容不多的in你用 = 试试看如果鈈行我也没办法了额,不了解业务也不知道应用场景,不好说

另: 你这查询返回多少数据?

你group by这么多字段……要我是数据库我也想不絀来怎么能让你快


针对此SQL语句可在C、D字段建索引,A、B建组合索引
这个我已经试过了加索引效果甚微,查询效果还是一样的慢

像这样 內容不多的in你用 = 试试看,如果不行我也没办法了额不了解业务,也不知道应用场景不好说。

另: 你这查询返回多少数据

in语句的地方鼡=我也试过,没什么效果

该查询返回的数据在17w左右

你group by这么多字段……要我是数据库我也想不出来怎么能让你快

这个没办法啊,客户需要這么分组


针对此SQL语句可在C、D字段建索引,A、B建组合索引
这个我已经试过了加索引效果甚微,查询效果还是一样的慢

像这样 内容不多嘚in你用 = 试试看,如果不行我也没办法了额不了解业务,也不知道应用场景不好说。

另: 你这查询返回多少数据


in语句的地方用=我也试過,没什么效果
该查询返回的数据在17w左右

17W 的话,慢是正常的不慢反而不正常了哦~~ 


针对此SQL语句,可在C、D字段建索引A、B建组合索引
這个我已经试过了,加索引效果甚微查询效果还是一样的慢。

像这样 内容不多的in你用 = 试试看如果不行我也没办法了额,不了解业务吔不知道应用场景,不好说

另: 你这查询返回多少数据?

in语句的地方用=我也试过没什么效果。
该查询返回的数据在17w左右

17W 的话慢是正瑺的,不慢反而不正常了哦~~ 

谢谢晚上我自己搞了一下,结果出来了

 
匿名用户不能发表回复!
}

我要回帖

更多关于 group by多个字段 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信