Настройка NOT NULL
няма ефект per se върху производителността. Няколко цикъла за проверка - без значение.
Но можете да подобрите производителността, като действително използвате NULL вместо фиктивни стойности. В зависимост от типовете данни можете да спестите много дисково пространство и RAM , като по този начин ускорява .. всичко.
Нулевата растерна карта се разпределя само ако има NULL стойности в реда . Това е един бит за всеки колона в реда (NULL или не). За таблици до 8 колони нулевата растерна графика е ефективно напълно безплатна, използвайки резервен байт между заглавката на кортежа и данните на реда. След това пространството се разпределя кратно на MAXALIGN
(обикновено 8 байта, покриващи 64 колони). Разликата се губи от подложката. Така че плащате пълната (ниска!) цена за първата NULL стойност във всеки ред . Допълнителните NULL стойности могат само да спестят място.
Минималното изискване за съхранение за всяка ненулева стойност е 1 байт (boolean
, "char"
, ...) или обикновено много повече, плюс (евентуално) подложка за подравняване. Прочетете за типове данни
или проверете кървавите подробности в системната таблица pg_type
.
Повече за нулевото хранилище:
- Неизползването на NULL в PostgreSQL все още ли използва растерно изображение NULL в заглавката?
- Ръководството.