sql >> Database >  >> RDS >> Sqlserver

Lijst van alle nullable-kolommen in een SQL Server-database

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];

  1. PostgreSQL Meltdown-benchmarks

  2. Wat u moet weten MET NOCHECK bij het inschakelen van een CHECK-beperking in SQL Server

  3. Hoe postgres-tabel te partitioneren met behulp van tussenliggende tabel

  4. Hoe een externe MySQL-verbinding in te stellen