diff --git a/apps/benchmarks/UniformGridGPU/simulation_setup/benchmark_configs_RDM.py b/apps/benchmarks/UniformGridGPU/simulation_setup/benchmark_configs_RDM.py
index fb34224795eb45f42288e63e14992cc6fb0877ae..82222270efb25c18dc770fb0d6a3b72299d10098 100755
--- a/apps/benchmarks/UniformGridGPU/simulation_setup/benchmark_configs_RDM.py
+++ b/apps/benchmarks/UniformGridGPU/simulation_setup/benchmark_configs_RDM.py
@@ -189,12 +189,23 @@ class Scenario:
         result = data
         sequenceValuesToScalars(result)
         num_tries = 4
-        # check multiple times e.g. may fail when multiple benchmark processes are running
         table_name = f"runs_{data['stencil']}_{data['streamingPattern']}_{data['collisionSetup']}_{prod(self.blocks)}"
         table_name = table_name.replace("-", "_")  # - not allowed for table name would lead to syntax error
+
         for num_try in range(num_tries):
             try:
-                checkAndUpdateSchema(result, table_name, self.db_file_name)
+                # Check existing columns
+                conn = sqlite3.connect(self.db_file_name)
+                c = conn.cursor()
+                c.execute(f"PRAGMA table_info({table_name})")
+                existing_columns = [info[1] for info in c.fetchall()]
+                conn.close()
+
+                # Filter out existing columns
+                new_columns = {k: v for k, v in result.items() if k not in existing_columns}
+
+                if new_columns:
+                    checkAndUpdateSchema(new_columns, table_name, self.db_file_name, alter_table=True)
                 storeSingle(result, table_name, self.db_file_name)
                 break
             except sqlite3.OperationalError as e: