diff --git a/CHANGES b/CHANGES
index 39b78d2..51bfa62 100644
--- a/CHANGES
+++ b/CHANGES
@@ -8,6 +8,8 @@
 
   IMPROVEMENT
 
+    TAJO-2057: Remove redundant class loading in plan optimizer. (jinho)
+
     TAJO-2032: Change tajo.rest.service.port to be the general style in TAJO.
     (Byunghwa Yun via jihoon)
 
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
index a8a3ff3..4d742c7 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/EvalTreeOptimizer.java
@@ -35,9 +35,9 @@
 public class EvalTreeOptimizer {
   private static final Log LOG = LogFactory.getLog(EvalTreeOptimizer.class);
 
-  private List<EvalTreeOptimizationRule> rules = Lists.newArrayList();
+  private static List<EvalTreeOptimizationRule> rules = Lists.newArrayList();
 
-  public EvalTreeOptimizer() {
+  static {
     Set<Class> functionClasses = ClassUtil.findClasses(EvalTreeOptimizationRule.class,
         EvalTreeOptimizationRule.class.getPackage().getName() + ".rules");
 
@@ -66,6 +66,9 @@
     });
   }
 
+  public EvalTreeOptimizer() {
+  }
+
   public EvalNode optimize(LogicalPlanner.PlanContext context, EvalNode node) {
     Preconditions.checkNotNull(node);
 
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessEngine.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessEngine.java
index f02faef..93ba8ea 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessEngine.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessEngine.java
@@ -42,7 +42,7 @@
   }
 
   /** class logger */
-  private Log LOG = LogFactory.getLog(BaseLogicalPlanPreprocessEngine.class);
+  private static Log LOG = LogFactory.getLog(BaseLogicalPlanPreprocessEngine.class);
 
   /** a map for pre-process phases */
   private Map<String, LogicalPlanPreprocessPhase> preprocessPhases = new LinkedHashMap<>();
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessPhaseProvider.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessPhaseProvider.java
index 80805d8..2259b34 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessPhaseProvider.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanPreprocessPhaseProvider.java
@@ -18,16 +18,21 @@
 
 package org.apache.tajo.plan.rewrite;
 
-import java.util.ArrayList;
+import com.google.common.collect.Lists;
+
 import java.util.Collection;
 import java.util.List;
 
 public class BaseLogicalPlanPreprocessPhaseProvider extends LogicalPlanPreprocessPhaseProvider {
-  @Override
-  public Collection<Class<? extends LogicalPlanPreprocessPhase>> getPhases() {
-    List phases = new ArrayList<>();
+  private static List<Class<? extends LogicalPlanPreprocessPhase>> phases = Lists.newArrayList();
+
+  static {
     phases.add(BaseSchemaBuildPhase.class);
     phases.add(SelfDescSchemaBuildPhase.class);
+  }
+
+  @Override
+  public Collection<Class<? extends LogicalPlanPreprocessPhase>> getPhases() {
     return phases;
   }
 }
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java
index 21a0905..fda15ee 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/BaseLogicalPlanRewriteEngine.java
@@ -34,7 +34,7 @@
  */
 public class BaseLogicalPlanRewriteEngine implements LogicalPlanRewriteEngine {
   /** class logger */
-  private Log LOG = LogFactory.getLog(BaseLogicalPlanRewriteEngine.class);
+  private static Log LOG = LogFactory.getLog(BaseLogicalPlanRewriteEngine.class);
 
   private final StorageService storage;
 
