diff --git a/database/getOrCreateValueType.go b/database/getOrCreateValueType.go
index 9e51c1a67ae9fca45bb9af7dc4c35220a243b4f7..ec2fdb96d5c1a9a758462031e519c53f61739fef 100644
--- a/database/getOrCreateValueType.go
+++ b/database/getOrCreateValueType.go
@@ -6,13 +6,19 @@ import (
 	"jonasled.dev/jonasled/ems-esp-logger/log"
 )
 
+var valueTypeCache = make(map[string]tables.ValueType)
+
 func GetOrCreateValueType(name string) tables.ValueType {
+	if cachedValueType, found := valueTypeCache[name]; found {
+		return cachedValueType
+	}
+
+	// If it's not in the cache, query the database
 	var valueType tables.ValueType
 	err := Db.Where("name = ?", name).First(&valueType).Error
 
 	if err != nil {
 		if err == gorm.ErrRecordNotFound {
-			// Create a new instance if it doesn't exist
 			valueType = tables.ValueType{
 				Name: name,
 			}
@@ -25,6 +31,7 @@ func GetOrCreateValueType(name string) tables.ValueType {
 		}
 	}
 
-	return valueType
+	valueTypeCache[name] = valueType
 
+	return valueType
 }