diff --git a/sql/sql_explain.cc b/sql/sql_explain.cc
index 774eacb58a5..2848d3a8685 100644
--- a/sql/sql_explain.cc
+++ b/sql/sql_explain.cc
@@ -959,6 +959,8 @@ void Explain_select::print_explain_json(Explain_query *query,
     {
       writer->add_member("r_loops").add_ll(time_tracker.get_loops());
       writer->add_member("r_total_time_ms").add_double(time_tracker.get_time_ms());
+
+      writer->add_member("r_other_time_ms").add_double(extra_sel_time_tracker.get_time_ms());
     }
 
     if (exec_const_cond)
@@ -1728,6 +1730,7 @@ static void trace_engine_stats(handler *file, Json_writer *writer)
       writer->add_member("old_rows_read").add_ull(hs->undo_records_read);
     writer->end_object();
   }
+
 }
 
 void Explain_table_access::print_explain_json(Explain_query *query,
diff --git a/sql/sql_explain.h b/sql/sql_explain.h
index c0783d5fad1..48dd42767ec 100644
--- a/sql/sql_explain.h
+++ b/sql/sql_explain.h
@@ -252,6 +252,7 @@ class Explain_select : public Explain_basic_join
 
   /* ANALYZE members */
   Time_and_counter_tracker time_tracker;
+  Gap_time_tracker extra_sel_time_tracker;
   
   /* 
     Part of query plan describing sorting, temp.table usage, and duplicate 
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index dfe8214c0a9..9b7355008d4 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -28711,6 +28711,10 @@ int JOIN::save_explain_data_intern(Explain_query *output,
 
     table_map used_tables=0;
 
+    if (likely(thd->lex->analyze_stmt))
+    {
+      xpl_sel->time_tracker.set_gap_tracker(&xpl_sel->extra_sel_time_tracker);
+    }
     join->select_lex->set_explain_type(true);
     xpl_sel->select_id= join->select_lex->select_number;
     xpl_sel->select_type= join->select_lex->type;
