diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index ede8cec947..60c74dc4f0 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -3168,6 +3168,17 @@ show_resultcache_info(ResultCacheState *rcstate, List *ancestors,
 
 		si = &rcstate->shared_info->sinstrument[n];
 
+		/*
+		 * Skip for workers that didn't launch. The assumption is that result
+		 * cache's suplan is never a partial plan.  So the assumption for the
+		 * leader that there will always be at least one cache miss holds true
+		 * for worker also. If result cache starts accepting partial subplans,
+		 * then zero cache_misses won't necessarily mean the worker has not
+		 * launched.
+		 */
+		if (si->cache_misses == 0)
+			continue;
+
 		if (es->workers_state)
 			ExplainOpenWorker(n, es);
 
