diff --git a/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java b/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
index d606c76..47fcf76 100644
--- a/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
+++ b/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
@@ -66,6 +66,7 @@
     private String namedVCPath;
 
     private boolean createInitialSuperClient;
+    private boolean vcListStatisticsEnabled;
 
     public FullConfiguration (Properties properties) throws Exception {
         super(properties);
@@ -96,6 +97,8 @@
 
         setMaxNumberOfUserQueries(Integer.parseInt(
                 properties.getProperty("max.user.persistent.queries", "20")));
+		setVcListStatisticsEnabled(Boolean.valueOf(properties.getProperty(
+				"vc.list.statistics.enabled", "false")));
     }
 
     private void setSecurityConfiguration (Properties properties)
@@ -427,4 +430,14 @@
         this.maxNumberOfUserQueries = maxNumberOfUserQueries;
     }
 
+	public boolean isVcListStatisticsEnabled () {
+		return vcListStatisticsEnabled;
+	}
+
+	public void setVcListStatisticsEnabled (boolean vcListStatisticsEnabled) {
+		this.vcListStatisticsEnabled = vcListStatisticsEnabled;
+	}
+
+	
+
 }
diff --git a/src/main/java/de/ids_mannheim/korap/service/QueryService.java b/src/main/java/de/ids_mannheim/korap/service/QueryService.java
index f329ab0..5a8bbf7 100644
--- a/src/main/java/de/ids_mannheim/korap/service/QueryService.java
+++ b/src/main/java/de/ids_mannheim/korap/service/QueryService.java
@@ -146,24 +146,32 @@
         Iterator<QueryDO> i = queryList.iterator();
         while (i.hasNext()) {
             query = i.next();
-            String json = "";
-            String statistics = null;
-			if (queryType.equals(QueryType.VIRTUAL_CORPUS)) {
-				if (query.isCached()) {
-					List<String> cqList = new ArrayList<>(1);
-					cqList.add("referTo " + query.getName());
-					json = buildKoralQueryFromCorpusQuery(cqList);
-				}
-				else {
-					json = query.getKoralQuery();
-				}
-				statistics = krill.getStatistics(json);
-			}
+            String statistics = computeStatisticsForVC(query, queryType);
 			QueryDto dto = converter.createQueryDto(query, statistics);
 			dtos.add(dto);
 		}
 		return dtos;
     }
+    
+	private String computeStatisticsForVC (QueryDO query, QueryType queryType)
+			throws KustvaktException {
+		if (config.isVcListStatisticsEnabled() && 
+				queryType.equals(QueryType.VIRTUAL_CORPUS)) {		
+    		String json = "";
+    		if (query.isCached()) {
+    			List<String> cqList = new ArrayList<>(1);
+    			cqList.add("referTo " + query.getName());
+    			json = buildKoralQueryFromCorpusQuery(cqList);
+    		}
+    		else {
+    			json = query.getKoralQuery();
+    		}
+    		return krill.getStatistics(json);
+		}
+		else {
+			return null;
+		}
+	}
 
     public void deleteQueryByName (String deletedBy, String queryName,
             String createdBy, QueryType type) throws KustvaktException {
diff --git a/src/main/resources/kustvakt.conf b/src/main/resources/kustvakt.conf
index e45ea32..61cad26 100644
--- a/src/main/resources/kustvakt.conf
+++ b/src/main/resources/kustvakt.conf
@@ -37,6 +37,9 @@
 default.foundry.morphology = marmot
 default.foundry.surface = base
 
+# Virtual corpus and queries
+max.user.persistent.queries = 5
+vc.list.statistics.enabled = false
 
 # Availability regex only support |
 # It should be removed/commented when the data doesn't contain availability field.
diff --git a/src/test/resources/kustvakt-test.conf b/src/test/resources/kustvakt-test.conf
index 13fd337..f50c4ab 100644
--- a/src/test/resources/kustvakt-test.conf
+++ b/src/test/resources/kustvakt-test.conf
@@ -49,6 +49,8 @@
 # Virtual corpus and queries
 max.user.persistent.queries = 5
 max.token.context.size = 40
+# default false
+vc.list.statistics.enabled = true
 
 # Availability regex only support |
 # It should be removed/commented when the data doesn't contain availability field.
