diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index a739d1ab903e18178f1199f562e53389bf4312f4..44ae691a84bb115fdef2455cc54394fa3233095b 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -726,11 +726,14 @@ public class CouchDBDao implements IDatabaseDao {
 		view.setEndKey(session.get_id(), "{}");
 		final ViewResults results = getDatabase().view(view);
 
+		List<Question> questions = new ArrayList<Question>();
 		for (final Document d : results.getResults()) {
 			final Question q = new Question();
 			q.set_id(d.getId());
-			deleteQuestionWithAnswers(q);
+			q.set_rev(d.getRev());
+			questions.add(q);
 		}
+		deleteAllAnswersWithQuestions(questions);
 	}
 
 	private void deleteDocument(final String documentId) throws IOException {
@@ -743,11 +746,16 @@ public class CouchDBDao implements IDatabaseDao {
 		try {
 			final NovaView view = new NovaView("answer/cleanup");
 			view.setKey(question.get_id());
+			view.setIncludeDocs(true);
 			final ViewResults results = getDatabase().view(view);
 
-			for (final Document d : results.getResults()) {
-				deleteDocument(d.getId());
+			List<Document> answersToDelete = new ArrayList<Document>();
+			for (final Document a : results.getResults()) {
+				final Document d = new Document(a.getJSONObject("doc"));
+				d.put("_deleted", true);
+				answersToDelete.add(d);
 			}
+			database.bulkSaveDocuments(answersToDelete.toArray(new Document[answersToDelete.size()]));
 		} catch (final IOException e) {
 			LOGGER.error("IOException: Could not delete answers for question {}", question.get_id());
 		}
@@ -1552,25 +1560,77 @@ public class CouchDBDao implements IDatabaseDao {
 	@Override
 	public void deleteAllQuestionsAnswers(final Session session) {
 		final List<Question> questions = getQuestions(new NovaView("skill_question/by_session"), session);
-		for (final Question q : questions) {
-			deleteAnswers(q);
-		}
+		deleteAllAnswersForQuestions(questions);
 	}
 
 	@Override
 	public void deleteAllPreparationAnswers(final Session session) {
 		final List<Question> questions = getQuestions(new NovaView("skill_question/preparation_question_by_session"), session);
-		for (final Question q : questions) {
-			deleteAnswers(q);
-		}
+		deleteAllAnswersForQuestions(questions);
 	}
 
 	@Override
 	public void deleteAllLectureAnswers(final Session session) {
 		final List<Question> questions = getQuestions(new NovaView("skill_question/lecture_question_by_session"), session);
-		for (final Question q : questions) {
-			deleteAnswers(q);
+		deleteAllAnswersForQuestions(questions);
+	}
+
+	private boolean deleteAllAnswersForQuestions(List<Question> questions) {
+		List<String> questionIds = new ArrayList<String>();
+		for (Question q : questions) {
+			questionIds.add(q.get_id());
+		}
+		final NovaView bulkView = new NovaView("answer/cleanup");
+		bulkView.setKeys(questionIds);
+		bulkView.setIncludeDocs(true);
+		final List<Document> result = getDatabase().view(bulkView).getResults();
+		final List<Document> allAnswers = new ArrayList<Document>();
+		for (Document a : result) {
+			final Document d = new Document(a.getJSONObject("doc"));
+			d.put("_deleted", true);
+			allAnswers.add(d);
+		}
+		try {
+			getDatabase().bulkSaveDocuments(allAnswers.toArray(new Document[allAnswers.size()]));
+		} catch (IOException e) {
+			LOGGER.error("Could not bulk delete answers: {}", e.getMessage());
+			return false;
+		}
+		return true;
+	}
+
+	private boolean deleteAllAnswersWithQuestions(List<Question> questions) {
+		List<String> questionIds = new ArrayList<String>();
+		final List<Document> allQuestions = new ArrayList<Document>();
+		for (Question q : questions) {
+			final Document d = new Document();
+			d.put("_id", q.get_id());
+			d.put("_rev", q.get_rev());
+			d.put("_deleted", true);
+			questionIds.add(q.get_id());
+			allQuestions.add(d);
+		}
+		final NovaView bulkView = new NovaView("answer/cleanup");
+		bulkView.setKeys(questionIds);
+		bulkView.setIncludeDocs(true);
+		final List<Document> result = getDatabase().view(bulkView).getResults();
+
+		final List<Document> allAnswers = new ArrayList<Document>();
+		for (Document a : result) {
+			final Document d = new Document(a.getJSONObject("doc"));
+			d.put("_deleted", true);
+			allAnswers.add(d);
+		}
+
+		try {
+			List<Document> deleteList = new ArrayList<Document>(allAnswers);
+			deleteList.addAll(allQuestions);
+			getDatabase().bulkSaveDocuments(deleteList.toArray(new Document[deleteList.size()]));
+		} catch (IOException e) {
+			LOGGER.error("Could not bulk delete questions and answers: {}", e.getMessage());
+			return false;
 		}
+		return true;
 	}
 
 	@Override