diff --git a/changelog.d/16552.misc b/changelog.d/16552.misc
new file mode 100644
index 0000000000000000000000000000000000000000..73a0376df097f17681385f759541f8427f2d63d8
--- /dev/null
+++ b/changelog.d/16552.misc
@@ -0,0 +1 @@
+Reduce a little database load while processing state auth chains.
diff --git a/synapse/storage/databases/main/event_federation.py b/synapse/storage/databases/main/event_federation.py
index 7e992ca4a28c1d26dd0cae99a96aad47fe24cdf9..d5fb6ecc73bc2d14aa7a2f44b97f63ee5aa2a180 100644
--- a/synapse/storage/databases/main/event_federation.py
+++ b/synapse/storage/databases/main/event_federation.py
@@ -301,6 +301,11 @@ class EventFederationWorkerStore(SignatureWorkerStore, EventsWorkerStore, SQLBas
         # Add the initial set of chains, excluding the sequence corresponding to
         # initial event.
         for chain_id, seq_no in event_chains.items():
+            # Check if the initial event is the first item in the chain. If so, then
+            # there is nothing new to add from this chain.
+            if seq_no == 1:
+                continue
+
             chains[chain_id] = max(seq_no - 1, chains.get(chain_id, 0))
 
         # Now for each chain we figure out the maximum sequence number reachable