我在 GitHub 上有一些测试记录了执行查询和获取所有结果所花费的时间。
如果我检查执行计划,我会得到:
Index Scan using post_comment_pkey on post_comment postcommen0_ (cost=0.29..2716.48 rows=34752 width=43) (actual time=6.767..14.352 rows=34880 loops=1)
Filter: (post_id = 1)
Rows Removed by Filter: 34880
Planning time: 0.659 ms
Execution time: 14.840 ms
因此,查询使用索引并在 15 毫秒内执行。
但是在Java端,在抓取并处理完ResultSet后,测时间显示耗时90ms。
唯一的解释是 Explain Analyze doe snot 考虑获取时间并且获取 34880 条记录需要 50-60 毫秒。
这个对吗?
获取性能取决于客户端性能、可用内存、cpu 使用率、网络性能……我看不出 EXPLAIN ANALYZE 如何考虑到这一点。所以我会说你是对的。