Add debug
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
index 09e21e1..f03a0e5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
@@ -309,6 +309,7 @@
       ExecutionResult result;
       if (clientSession.getSqlDialect() == IClientSession.SqlDialect.TREE) {
         Statement s = StatementGenerator.createStatement(statement, clientSession.getZoneId());
+        LOGGER.info("parse cost {}", (System.nanoTime() - startTime));
 
         if (s == null) {
           return RpcUtils.getTSExecuteStatementResp(
@@ -343,6 +344,7 @@
       } else {
         org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement s =
             relationSqlParser.createStatement(statement, clientSession.getZoneId());
+        LOGGER.info("parse cost {}", (System.nanoTime() - startTime));
 
         if (s instanceof Use) {
           useDatabase = true;
@@ -372,6 +374,8 @@
                 req.getTimeout());
       }
 
+      LOGGER.info("plan cost {}", (System.nanoTime() - startTime));
+
       if (result.status.code != TSStatusCode.SUCCESS_STATUS.getStatusCode()
           && result.status.code != TSStatusCode.REDIRECTION_RECOMMEND.getStatusCode()) {
         finished = true;
@@ -435,6 +439,7 @@
       if (quota != null) {
         quota.close();
       }
+      LOGGER.info("query cost: {}", currentOperationCost);
     }
   }
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/driver/Driver.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/driver/Driver.java
index 356a632..dd4813d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/driver/Driver.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/driver/Driver.java
@@ -428,6 +428,7 @@
         value[1] += operatorContext.getNextCalledCount();
       }
       for (Map.Entry<String, long[]> entry : operatorType2TotalCost.entrySet()) {
+        LOGGER.info("driver cost {}: {}", entry.getKey(), entry.getValue());
         QUERY_METRICS.recordOperatorExecutionCost(entry.getKey(), entry.getValue()[0]);
         QUERY_METRICS.recordOperatorExecutionCount(entry.getKey(), entry.getValue()[1]);
       }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
index 15fe071..c46f1e9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
@@ -49,6 +49,7 @@
 import org.apache.tsfile.read.reader.IPageReader;
 import org.apache.tsfile.read.reader.IPointReader;
 import org.apache.tsfile.read.reader.page.AlignedPageReader;
+import org.apache.tsfile.read.reader.page.TablePageReader;
 import org.apache.tsfile.read.reader.series.PaginationController;
 import org.apache.tsfile.utils.Accountable;
 import org.apache.tsfile.utils.RamUsageEstimator;
@@ -1228,7 +1229,10 @@
       this.version = new MergeReaderPriority(fileTimestamp, version, offset, isSeq);
       this.data = data;
       this.isSeq = isSeq;
-      this.isAligned = data instanceof AlignedPageReader || data instanceof MemAlignedPageReader;
+      this.isAligned =
+          data instanceof AlignedPageReader
+              || data instanceof MemAlignedPageReader
+              || data instanceof TablePageReader;
       this.isMem = data instanceof MemPageReader || data instanceof MemAlignedPageReader;
     }
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/SeriesScanCostMetricSet.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/SeriesScanCostMetricSet.java
index ab6fb12..ebaa7c0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/SeriesScanCostMetricSet.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/metric/SeriesScanCostMetricSet.java
@@ -1107,28 +1107,28 @@
   /////////////////////////////////////////////////////////////////////////////////////////////////
   private static final String READ_CHUNK = "read_chunk";
   private static final String ALL = "all";
-  public static final String READ_CHUNK_ALL = READ_CHUNK + "_" + ALL;
+  public static final String READ_CHUNK_CACHE = READ_CHUNK + "_" + CACHE;
   public static final String READ_CHUNK_FILE = READ_CHUNK + "_" + FILE;
-  private Timer readChunkAllTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
+  private Timer readChunkCacheTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
   private Timer readChunkFileTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
 
   private void bindReadChunk(AbstractMetricService metricService) {
-    readChunkAllTimer =
+    readChunkCacheTimer =
         metricService.getOrCreateTimer(
             Metric.SERIES_SCAN_COST.toString(),
             MetricLevel.IMPORTANT,
             Tag.STAGE.toString(),
-            READ_CHUNK,
+            READ_CHUNK_CACHE,
             Tag.TYPE.toString(),
             NULL,
             Tag.FROM.toString(),
-            ALL);
+            CACHE);
     readChunkFileTimer =
         metricService.getOrCreateTimer(
             Metric.SERIES_SCAN_COST.toString(),
             MetricLevel.IMPORTANT,
             Tag.STAGE.toString(),
-            READ_CHUNK,
+            READ_CHUNK_FILE,
             Tag.TYPE.toString(),
             NULL,
             Tag.FROM.toString(),
@@ -1136,16 +1136,16 @@
   }
 
   private void unbindReadChunk(AbstractMetricService metricService) {
-    readChunkAllTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
+    readChunkCacheTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
     readChunkFileTimer = DoNothingMetricManager.DO_NOTHING_TIMER;
-    Arrays.asList(ALL, FILE)
+    Arrays.asList(CACHE, FILE)
         .forEach(
             from ->
                 metricService.remove(
                     MetricType.TIMER,
                     Metric.SERIES_SCAN_COST.toString(),
                     Tag.STAGE.toString(),
-                    READ_CHUNK,
+                    READ_CHUNK + "_" + from,
                     Tag.TYPE.toString(),
                     NULL,
                     Tag.FROM.toString(),
@@ -1571,8 +1571,8 @@
       case READ_TIMESERIES_METADATA_FILE:
         readTimeseriesMetadataFileTimer.updateNanos(cost);
         break;
-      case READ_CHUNK_ALL:
-        readChunkAllTimer.updateNanos(cost);
+      case READ_CHUNK_CACHE:
+        readChunkCacheTimer.updateNanos(cost);
         break;
       case READ_CHUNK_FILE:
         readChunkFileTimer.updateNanos(cost);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
index b855603..ff13095 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/AnalyzeVisitor.java
@@ -538,6 +538,7 @@
       logger.debug("[EndFetchSchema]");
       long schemaFetchCost = System.nanoTime() - startTime;
       context.setFetchSchemaCost(schemaFetchCost);
+      logger.info("device fetch cost: {}", schemaFetchCost);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TREE_TYPE, SCHEMA_FETCHER, schemaFetchCost);
     }
@@ -2227,6 +2228,7 @@
       }
     } finally {
       long partitionFetchCost = System.nanoTime() - startTime;
+      logger.info("data partition cost: {}", partitionFetchCost);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TREE_TYPE, PARTITION_FETCHER, partitionFetchCost);
       context.setFetchPartitionCost(partitionFetchCost);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analyzer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analyzer.java
index 238620b..ea844d1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analyzer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/Analyzer.java
@@ -25,11 +25,16 @@
 import org.apache.iotdb.db.queryengine.plan.analyze.schema.ISchemaFetcher;
 import org.apache.iotdb.db.queryengine.plan.statement.Statement;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import static org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.ANALYZER;
 import static org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TREE_TYPE;
 
 /** Analyze the statement and generate Analysis. */
 public class Analyzer {
+  private static final Logger LOGGER = LoggerFactory.getLogger(Analyzer.class);
+
   private final MPPQueryContext context;
 
   private final IPartitionFetcher partitionFetcher;
@@ -52,6 +57,7 @@
     }
 
     if (statement.isQuery()) {
+      LOGGER.info("analyze cost: {}", System.nanoTime() - startTime);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TREE_TYPE, ANALYZER, System.nanoTime() - startTime);
     }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
index 4ecddf1..65dc6af 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
@@ -303,6 +303,7 @@
 
     if (analysis.isQuery()) {
       long distributionPlanCost = System.nanoTime() - startTime;
+      LOGGER.info("distribution plan cost: {}", distributionPlanCost);
       context.setDistributionPlanCost(distributionPlanCost);
       QUERY_PLAN_COST_METRIC_SET.recordPlanCost(
           TREE_TYPE, DISTRIBUTION_PLANNER, distributionPlanCost);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java
index 1a05c5f..503beb6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanner.java
@@ -27,6 +27,9 @@
 import org.apache.iotdb.db.queryengine.plan.planner.plan.LogicalQueryPlan;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNode;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.util.Arrays;
 import java.util.List;
 
@@ -36,6 +39,8 @@
 /** Generate a logical plan for the statement. */
 public class LogicalPlanner {
 
+  private static final Logger LOGGER = LoggerFactory.getLogger(LogicalPlanner.class);
+
   private final MPPQueryContext context;
   private final List<PlanOptimizer> optimizers =
       Arrays.asList(new PredicatePushDown(), new AggregationPushDown());
@@ -54,12 +59,14 @@
 
       long planFinishTime = System.nanoTime();
       context.setLogicalPlanCost(planFinishTime - startTime);
+      LOGGER.info("logical plan cost: {}", planFinishTime - startTime);
 
       for (PlanOptimizer optimizer : optimizers) {
         rootNode = optimizer.optimize(rootNode, analysis, context);
       }
       context.setLogicalOptimizationCost(System.nanoTime() - planFinishTime);
 
+      LOGGER.info("optimize cost: {}", System.nanoTime() - planFinishTime);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TREE_TYPE, LOGICAL_PLANNER, System.nanoTime() - planFinishTime);
     }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analyzer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analyzer.java
index 8d25c7a..22a4306 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analyzer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/Analyzer.java
@@ -31,6 +31,9 @@
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Statement;
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.WrappedInsertStatement;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.util.List;
 import java.util.Map;
 
@@ -40,6 +43,8 @@
 
 public class Analyzer {
 
+  private static final Logger LOGGER = LoggerFactory.getLogger(Analyzer.class);
+
   private final StatementAnalyzerFactory statementAnalyzerFactory;
 
   private final MPPQueryContext context;
@@ -92,6 +97,7 @@
 
     analyzer.analyze(statement);
     if (statement instanceof Query) {
+      LOGGER.info("analyze cost: {}", System.nanoTime() - startTime);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TABLE_TYPE, ANALYZER, System.nanoTime() - startTime);
     }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
index 2692690..6d5e2b5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/TableLogicalPlanner.java
@@ -64,6 +64,8 @@
 import com.google.common.collect.ImmutableMap;
 import org.apache.tsfile.read.common.type.LongType;
 import org.apache.tsfile.read.common.type.TypeFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -79,6 +81,8 @@
 import static org.apache.iotdb.db.queryengine.plan.relational.type.InternalTypeManager.getTSDataType;
 
 public class TableLogicalPlanner {
+  private static final Logger LOGGER = LoggerFactory.getLogger(TableLogicalPlanner.class);
+
   private final MPPQueryContext queryContext;
   private final SessionInfo sessionInfo;
   private final SymbolAllocator symbolAllocator;
@@ -124,6 +128,7 @@
     PlanNode planNode = planStatement(analysis, statement);
 
     if (statement instanceof Query) {
+      LOGGER.info("logical plan cost: {}", System.nanoTime() - startTime);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TABLE_TYPE, LOGICAL_PLANNER, System.nanoTime() - startTime);
       startTime = System.nanoTime();
@@ -142,6 +147,7 @@
                     warningCollector,
                     PlanOptimizersStatsCollector.createPlanOptimizersStatsCollector()));
       }
+      LOGGER.info("optimize cost: {}", System.nanoTime() - startTime);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TABLE_TYPE, LOGICAL_PLAN_OPTIMIZE, System.nanoTime() - startTime);
     }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanner.java
index a485f38..c3d5e06 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanner.java
@@ -19,6 +19,7 @@
 import org.apache.iotdb.db.queryengine.execution.exchange.sink.DownStreamChannelLocation;
 import org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet;
 import org.apache.iotdb.db.queryengine.plan.analyze.QueryType;
+import org.apache.iotdb.db.queryengine.plan.execution.QueryExecution;
 import org.apache.iotdb.db.queryengine.plan.planner.distribution.WriteFragmentParallelPlanner;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.DistributedQueryPlan;
 import org.apache.iotdb.db.queryengine.plan.planner.plan.FragmentInstance;
@@ -38,6 +39,8 @@
 import org.apache.iotdb.db.queryengine.plan.relational.planner.optimizations.PlanOptimizer;
 import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Query;
 import org.apache.iotdb.db.queryengine.plan.relational.type.InternalTypeManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -51,6 +54,7 @@
 import static org.apache.iotdb.db.queryengine.metric.QueryPlanCostMetricSet.TABLE_TYPE;
 
 public class TableDistributedPlanner {
+  private static final Logger LOGGER = LoggerFactory.getLogger(TableDistributedPlanner.class);
 
   private final Analysis analysis;
   private final SymbolAllocator symbolAllocator;
@@ -104,6 +108,7 @@
     DistributedQueryPlan resultDistributedPlan = generateDistributedPlan(outputNodeWithExchange);
 
     if (analysis.getStatement() instanceof Query) {
+      LOGGER.info("distribution plan cost: {}", System.nanoTime() - startTime);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TABLE_TYPE, DISTRIBUTION_PLANNER, System.nanoTime() - startTime);
     }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
index f9d2d5e..ad8081b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
@@ -61,6 +61,8 @@
 import com.google.common.collect.ImmutableSet;
 import org.apache.tsfile.read.filter.basic.Filter;
 import org.apache.tsfile.utils.Pair;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.annotation.Nullable;
 
@@ -120,6 +122,7 @@
  * to be adapted.
  */
 public class PushPredicateIntoTableScan implements PlanOptimizer {
+  private static final Logger LOGGER = LoggerFactory.getLogger(PushPredicateIntoTableScan.class);
 
   private static final IoTDBConfig CONFIG = IoTDBDescriptor.getInstance().getConfig();
 
@@ -439,6 +442,7 @@
               attributeColumns,
               queryContext);
       tableScanNode.setDeviceEntries(deviceEntries);
+      LOGGER.info("device fetch cost: {}", System.nanoTime() - startTime);
       QueryPlanCostMetricSet.getInstance()
           .recordPlanCost(TABLE_TYPE, SCHEMA_FETCHER, System.nanoTime() - startTime);
 
@@ -477,7 +481,7 @@
         } else {
           analysis.upsertDataPartition(dataPartition);
         }
-
+        LOGGER.info("data partition cost: {}", System.nanoTime() - startTime);
         QueryPlanCostMetricSet.getInstance()
             .recordPlanCost(TABLE_TYPE, PARTITION_FETCHER, System.nanoTime() - startTime);
       }
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/ClusterScheduler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/ClusterScheduler.java
index 448f082..ec9f635 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/ClusterScheduler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/ClusterScheduler.java
@@ -136,6 +136,7 @@
       stateMachine.transitionToFailed(e);
       return;
     } finally {
+      logger.info("dispatch cost: {}", System.nanoTime() - startTime);
       QUERY_EXECUTION_METRICS.recordExecutionCost(WAIT_FOR_DISPATCH, System.nanoTime() - startTime);
     }
 
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
index 5914272..a604409 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
@@ -47,7 +47,7 @@
 import java.util.function.Function;
 import java.util.function.LongConsumer;
 
-import static org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.READ_CHUNK_ALL;
+import static org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.READ_CHUNK_CACHE;
 import static org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet.READ_CHUNK_FILE;
 
 /**
@@ -162,11 +162,13 @@
     } finally {
       if (chunkLoader.isCacheMiss()) {
         cacheMissAdder.accept(1);
+        SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
+            READ_CHUNK_FILE, System.nanoTime() - startTime);
       } else {
         cacheHitAdder.accept(1);
+        SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
+            READ_CHUNK_CACHE, System.nanoTime() - startTime);
       }
-      SERIES_SCAN_COST_METRIC_SET.recordSeriesScanCost(
-          READ_CHUNK_ALL, System.nanoTime() - startTime);
     }
   }