Установка “NOT NULL” на столбце в postgresql увеличивают производительность?

Просто предположение, но как оператор может возвратить пустой указатель - таким образом, он может иметь отношение к фактической реализации эти new SomeObject { ... } код, так как это - синтаксический сахар. return results.OfType<ISomeTable>(); фильтры на основе типа, таким образом, оператор возврата Вашего метода только возвратит тот тип (гарантирующий безопасность типов). Я столкнулся с подобной проблемой с возвратом универсальных типов.

P.S. Я люблю "Операцию, мог дестабилизировать время выполнения". исключение. Это почти похоже, "Вы могли бы аварийно завершить Интернет" исключение.

10
задан ThinkingStiff 30 June 2012 в 05:12
поделиться

2 ответа

Всегда полезно держать столбцы от NULL, если вы можете этого избежать, потому что семантика использования очень запутанная; см. Что такое NULL? для хорошего обсуждения того, как они могут доставить вам проблемы.

В версиях PostgreSQL до 8.2 программное обеспечение не знало, как проводить сравнения на индекс наиболее распространенного типа (b-дерево) таким образом, чтобы он включал поиск в них значений NULL. В соответствующей части документации по типам индексов вы можете увидеть, что это описано как «но обратите внимание, что IS NULL не эквивалентен = и не индексируется». Эффективный недостаток этого заключается в том, что если вы укажете запрос, который требует включения значений NULL, планировщик может быть не в состоянии удовлетворить его, используя очевидный индекс для этого случая. В качестве простого примера: если у вас есть оператор ORDER BY, который можно ускорить с помощью индекса, но ваш запрос также должен возвращать значения NULL, оптимизатор не может использовать этот индекс, потому что в результате будут отсутствовать какие-либо данные NULL - и следовательно, быть неполным и бесполезным. Оптимизатор знает об этом и вместо этого выполнит неиндексированное сканирование таблицы, что может быть очень дорогостоящим.

PostgreSQL улучшил это в версии 8.3 , "

13
ответ дан 3 December 2019 в 14:44
поделиться

Нет, до тех пор, пока вы на самом деле не храните NULL в таблице, индексы будут выглядеть точно так же (и одинаково эффективно).

Настройка столбец со значением NOT NULL имеет много других преимуществ, поэтому вы должны всегда устанавливать его, если не планируете хранить в нем NULL: -)

2
ответ дан 3 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: