暂无图片
pg中执行计划rows和mysql中执行计划的rows examined 的不同
我来答
分享
暂无图片 匿名用户
pg中执行计划rows和mysql中执行计划的rows examined 的不同

 explain select * from tab where id=5;
QUERY PLAN
------------------------------------------------------
Seq Scan on tab (cost=0.00..189.00 rows=1 width=22)
Filter: (id = 5)


表tab中有1万行,没有索引,上面这个发生了全表扫描,rows=1,是说返回的行数是1,如果在mysql中好像是

扫描的记录数,就是rows examined=10000,可以通过这个的大小来判断成本的高低,

感觉pg这个没有mysql的直观,rows=1返回的数据少,不代表扫描的少,pg中执行计划有类似mysql中rows examined=10000 的类似指标,就是rows越大,成本越高

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
张sir

你可以用explain analyze select * from tab where id=5看下:

test=# explain analyze select * from company where age=10;
QUERY PLAN
----------------------------------------------------------------------------------------------------
Seq Scan on company (cost=0.00..13.62 rows=1 width=248) (actual time=0.010..0.011 rows=1 loops=1)
Filter: (age = 10)
Rows Removed by Filter: 2   =================》这个扫描节点通过过滤条件过滤掉的行数,这个值和上面的rows的和,在一定程度上反应了总共扫描的行数。
Planning Time: 0.047 ms
Execution Time: 0.021 ms
(5 rows)


暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~