sql >> Databasteknik >  >> RDS >> PostgreSQL

Ökar inställningen av NOT NULL på en kolumn i postgresql prestanda?

Ställer in NOT NULL har ingen effekt i sig på prestandan. Några cykler för kontrollen - irrelevant.

Men du kan förbättra prestandan genom att faktiskt använda NULL istället för dummyvärden. Beroende på datatyper kan du spara mycket diskutrymme och RAM , och därigenom påskynda .. allt.

Null-bitmappen tilldelas endast om det finns några NULL-värden i raden . Det är en bit för varje kolumn i raden (NULL eller inte). För tabeller upp till 8 kolumner är null-bitmappen i praktiken helt gratis, med en extra byte mellan tupelhuvud och raddata. Därefter tilldelas utrymme i multipler av MAXALIGN (vanligtvis 8 byte, som täcker 64 kolumner). Skillnaden går förlorad på stoppning. Så du betalar hela (lågt!) priset för det första NULL-värdet i varje rad . Ytterligare NULL-värden kan bara spara utrymme.

Minsta lagringskrav för alla icke-nullvärden är 1 byte (boolean , "char" , ...) eller vanligtvis mycket mer, plus (eventuellt) stoppning för justering. Läs mer om datatyper eller kontrollera de blodiga detaljerna i systemtabellen pg_type .

Mer om nolllagring:



  1. Använd APP_NAME() för att hämta applikationsnamnet för den aktuella sessionen i SQL Server

  2. Vad jag ska välja - JSON eller SQLite?

  3. Skript för att skapa Mysql-användare

  4. Det aktiva resultatet innehåller inga fält som använder PDO med MS SQL