论坛首页 综合技术论坛

postgresSQL数据库,两个不同效率的查询语句

浏览 2212 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-08  
--SQL  1
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]
   发表时间:2011-07-11  
你第二种写法才是错误的。你这样一来,必然产生一个t_sd_vxid表的全表扫描,而无法通过t_vinfo表过滤。
你第一种写法只要正确使用索引,那么效率是非常高的。可以很快完成。
如果你要坚持自己的观点,那么把执行计划贴出来吧。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics