diff --git a/backend/metagenedb/api/catalog/views/gene.py b/backend/metagenedb/api/catalog/views/gene.py
index ec6bf399fb8dae6a6d09d2bab54e8cd102e1c245..935a712fe922a3bd8166842d385b7d5c7bd42aa9 100644
--- a/backend/metagenedb/api/catalog/views/gene.py
+++ b/backend/metagenedb/api/catalog/views/gene.py
@@ -43,7 +43,7 @@ class DocGeneLength(object):
 
 
 class GeneViewSet(BulkViewSet):
-    queryset = Gene.objects.all()
+    queryset = Gene.objects.select_related('taxonomy').prefetch_related('functions').all()
     serializer_class = GeneSerializer
     lookup_field = 'gene_id'
     GENE_LENGTH_COL = 'length'
diff --git a/backend/metagenedb/api/catalog/views/taxonomy.py b/backend/metagenedb/api/catalog/views/taxonomy.py
index 2f9b484955a375405b72a94d9eea86665e4bf1f0..f86e65ab3860ee457c10890e215ce26733a638a4 100644
--- a/backend/metagenedb/api/catalog/views/taxonomy.py
+++ b/backend/metagenedb/api/catalog/views/taxonomy.py
@@ -8,7 +8,8 @@ from .bulk_viewset import BulkViewSet
 
 
 class TaxonomyViewSet(BulkViewSet):
-    queryset = Taxonomy.objects.all()
+    queryset = Taxonomy.objects.select_related(
+        "parent", "superkingdom", "kingdom", "phylum", "class_rank", "order", "family", "genus", "species").all()
     serializer_class = TaxonomySerializer
     lookup_field = 'tax_id'
     filterset_class = TaxonomyFilter