浏览 2207 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-08
select b.name,sum(a.vcount)as vcount from t_sd_vxid a join dict.t_vinfo b on a.vxid = b.p_id group by a.vxid order by vcount desc limit 20 --SQL 2 select b.name,t.vcount from (select a.vxid,sum(a.vcount)as vcount from t_sd_vxid a group by a.vxid order by vcount desc limit 20)t join dict.t_vinfo b on t.vxid = b.p_id --注意一下2个语句的写法 查的结果相同 但第2个是比较优化的查询方式 --第一个中每一条记录都要匹配dict.t_vinfo 表 --第二个是统计后的记录再做匹配 --数据量大的时候第一个会把数据库资源占满[align=center][/align] 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-07-11
你第二种写法才是错误的。你这样一来,必然产生一个t_sd_vxid表的全表扫描,而无法通过t_vinfo表过滤。
你第一种写法只要正确使用索引,那么效率是非常高的。可以很快完成。 如果你要坚持自己的观点,那么把执行计划贴出来吧。 |
|
返回顶楼 | |