sql >> Database teknologi >  >> RDS >> PostgreSQL

Øger indstillingen NOT NULL på en kolonne i postgresql ydeevnen?

Indstilling af NOT NULL har ingen effekt i sig selv på ydeevnen. Et par cyklusser til kontrollen - irrelevant.

Men du kan forbedre ydeevnen ved faktisk at bruge NULL'er i stedet for dummy-værdier. Afhængigt af datatyper kan du spare meget diskplads og RAM , og derved fremskynde .. alt.

Null bitmap tildeles kun, hvis der er nogen NULL værdier i rækken . Det er en smule for hver kolonne i rækken (NULL eller ej). For tabeller op til 8 kolonner er null-bitmap faktisk helt gratis ved at bruge en ekstra byte mellem tuple header og rækkedata. Derefter tildeles plads i multipla af MAXALIGN (typisk 8 bytes, der dækker 64 kolonner). Forskellen er tabt til polstring. Så du betaler den fulde (lave!) pris for den første NULL-værdi i hver række . Yderligere NULL-værdier kan kun spare plads.

Minimumskravet til lager for enhver værdi, der ikke er null, er 1 byte (boolean , "char" , ...) eller typisk meget mere, plus (muligvis) polstring til justering. Læs mere om datatyper eller tjek de blodige detaljer i systemtabellen pg_type .

Mere om null storage:



  1. Dræber mysqld-processen

  2. php vil ikke indsætte data i databasen

  3. Postgres-forbindelse afvist fra Openshift Tomcat 7-patron

  4. Mysql langsom forespørgsel:JOIN + flere HVOR + BESTIL EFTER