Индекс по полю integer в PostgreSQL

Что есть


В оч. большой табличке PostgreSQL создаем поле типа integer + btree индекс по этому полю.
Большинство значений в поле дефолтные.

Что нужно


Выбирать строки с сортировкой по данному полю.

Вопросы

  • Какое дефолтное значение будет работать быстрее NULL или 0?
  • То же самое, касательно character(n), NULL или ''?
  • Вопрос задан
  • 3590 просмотров
Пригласить эксперта
Ответы на вопрос 2
OdobenusRosmarus
@OdobenusRosmarus
Я думаю вы не почувствуете разницу по скорости между NULL и каким-то значением. И, кстати, вы легко можете это проверить, тест для этого несложный.
Ответ написан
Комментировать
@pwlnw
Тоже задавался этим вопросом.
Cгенерируйте немножко данных и проверьте использует ли индекс запрос с WHERE IS NULL ( думаю, 80% NULL будет нормально)
Если в плане показано использование индекса — значит в индексе хранятся ссылки на ВСЕ значения NULL, и, соответственно, разницы нет.
Было бы интересно создавать иногда компактные индексы по «разреженным» значениям, где ссылки на NULL-значения не хранятся, но обычно в этом случае делают связь один-к-одному с другой таблицей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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