Nullable-kolommen in een database kunnen soms leiden tot prestatieproblemen. Dat wil zeker niet zeggen dat kolommen met nullwaarden altijd prestatieproblemen zullen veroorzaken, maar als u toch prestatieproblemen ondervindt, kan het identificeren van nullable-kolommen mogelijk enige aanwijzingen geven over waar het probleem ligt. Soms maakt u een kolom NOT NULL
kan helpen de prestaties te verbeteren.
Met "nullable kolommen" bedoel ik kolommen die NULL toestaan. Als de definitie van de kolom niet NOT NULL
bevat , dan staat het NULL-waarden toe en is het "nullable".
Hieronder vindt u code waarmee u alle nullable-kolommen in een database in SQL Server kunt weergeven.
Voorbeeld 1 – INFORMATION_SCHEMA.COLUMNS
Deze weergave van het informatieschema bevat alle kolommen die toegankelijk zijn voor de huidige gebruiker in de huidige database. Het heeft een kolom genaamd IS_NULLABLE
. Als de relevante kolom NULL toestaat, retourneert deze kolom
YES
. Anders
NEE
wordt geretourneerd.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE IS_NULLABLE = 'YES';
Hiermee worden alle kolommen uit de weergave weergegeven.
Voorbeeld 2 – INFORMATION_SCHEMA.COLUMNS met minder kolommen gespecificeerd
Mogelijk wilt u niet dat alle kolommen uit de weergave worden geretourneerd. Hier is een voorbeeld met minder geretourneerde kolommen.
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE IS_NULLABLE = 'YES' ORDER BY TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME;
Voorbeeld 3 – sys.columns gebruiken
Als u de INFORMATION_SCHEMA.COLUMNS
. niet wilt gebruiken bekijken, dan kunt u de sys.columns
. opvragen bekijk in plaats daarvan.
U moet echter enkele joins uitvoeren als u de tabellen en/of het schema, enz. wilt retourneren.
Voorbeeld:
SELECT SCHEMA_NAME(t.schema_id) AS [Schema], t.name AS [Table], c.name AS [Column], dc.definition AS [Column Default], ty.name AS [Data Type] FROM sys.tables AS t INNER JOIN sys.columns AS c ON t.object_id = c.object_id LEFT JOIN sys.types AS ty ON c.user_type_id = ty.user_type_id LEFT JOIN sys.default_constraints dc ON c.default_object_id = dc.object_id WHERE c.is_nullable = 1 ORDER BY [Schema], [Table], [Column];