From 4585e737898deac0d63ceabd5deaeb8c7bad7350 Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Mon, 23 Mar 2026 11:29:28 +1100 Subject: [PATCH] SMO lookup per FK db.Tables[name, schema] is an SMO collection lookup for every foreign key. build a HashSet<(string,string)> of valid tables upfront. --- src/SqlServerToMermaid/SchemaReader.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/SqlServerToMermaid/SchemaReader.cs b/src/SqlServerToMermaid/SchemaReader.cs index c4d5995..4511c99 100644 --- a/src/SqlServerToMermaid/SchemaReader.cs +++ b/src/SqlServerToMermaid/SchemaReader.cs @@ -41,14 +41,15 @@ public static async Task Read(SqlConnection connection, Cancel cancel) }) .ToList(); + var validTables = db.Tables + .Where(_ => !_.IsSystemObject) + .Select(_ => (_.Schema, _.Name)) + .ToHashSet(); + var foreignKeys = db.Tables .Where(_ => !_.IsSystemObject) .SelectMany(_ => _.ForeignKeys) - .Where(_ => - { - var referenced = db.Tables[_.ReferencedTable, _.ReferencedTableSchema]; - return referenced is not null && !referenced.IsSystemObject; - }) + .Where(_ => validTables.Contains((_.ReferencedTableSchema, _.ReferencedTable))) .Select(_ => new ForeignKey( Name: _.Name, ParentSchema: _.Parent.Schema,