diff --git a/sql/sql_analyze_stmt.h b/sql/sql_analyze_stmt.h
index f83ae1a..da61b94 100644
--- a/sql/sql_analyze_stmt.h
+++ b/sql/sql_analyze_stmt.h
@@ -26,7 +26,10 @@ class Exec_time_tracker
 public:
   Exec_time_tracker() : count(0), cycles(0) {}
   
-  // interface for collecting time
+  /* 
+    Interface for collecting time. We rely on the caller to call incr_loops()
+    also.
+  */
   void start_tracking()
   {
     last_start= my_timer_cycles();
diff --git a/sql/sql_explain.h b/sql/sql_explain.h
index e3b41ee..c124096 100644
--- a/sql/sql_explain.h
+++ b/sql/sql_explain.h
@@ -129,12 +129,12 @@ class Table_op_tracker
 };
 #endif
 
-#define ANALYZE_START_TRACKING(tracker) \
-  if (tracker) \
+#define ANALYZE_START_TRACKING(do_tracking, tracker) \
+  if (do_tracking) \
   { tracker->start_tracking(); }
 
-#define ANALYZE_STOP_TRACKING(tracker) \
-  if (tracker) \
+#define ANALYZE_STOP_TRACKING(do_tracking, tracker) \
+  if (do_tracking) \
   { tracker->stop_tracking(); }
 
 
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 5c3e116..fa7f42f 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -2384,15 +2384,16 @@ void JOIN::save_explain_data(Explain_query *output, bool can_overwrite,
 
 void JOIN::exec()
 {
+  bool do_tracking= thd->lex->analyze_stmt;
   DBUG_EXECUTE_IF("show_explain_probe_join_exec_start", 
                   if (dbug_user_var_equals_int(thd, 
                                                "show_explain_probe_select_id", 
                                                select_lex->select_number))
                         dbug_serve_apcs(thd, 1);
                  );
-  ANALYZE_START_TRACKING(tracker);
+  ANALYZE_START_TRACKING(do_tracking, tracker);
   exec_inner();
-  ANALYZE_STOP_TRACKING(tracker);
+  ANALYZE_STOP_TRACKING(do_tracking, tracker);
 
   DBUG_EXECUTE_IF("show_explain_probe_join_exec_end", 
                   if (dbug_user_var_equals_int(thd, 
@@ -23406,8 +23407,11 @@ void JOIN_TAB::save_explain_data(Explain_table_access *eta, table_map prefix_tab
   tab->tracker= &eta->tracker;
   tab->jbuf_tracker= &eta->jbuf_tracker;
   
-  tab->table->file->tracker= &eta->op_tracker;
-  /* id and select_type are kept in Explain_select */
+  /* Enable the table access time tracker only for "ANALYZE stmt" */
+  if (thd->lex->analyze_stmt)
+    tab->table->file->tracker= &eta->op_tracker;
+
+  /* No need to save id and select_type here, they are kept in Explain_select */
 
   /* table */
   if (table->derived_select_number)
