Сведения о вопросе

PASHA

07:52, 13th August, 2020

Теги

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

Просмотров: 393   Ответов: 2

Что есть


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

Что нужно


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

Вопросы

  • Какое дефолтное значение будет работать быстрее NULL или 0?
  • То же самое, касательно character(n), NULL или ''?


  Сведения об ответе

P_S_S

21:06, 5th August, 2020

Я думаю вы не почувствуете разницу по скорости между NULL и каким-то значением. И, кстати, вы легко можете это проверить, тест для этого несложный.


  Сведения об ответе

lesha

18:29, 26th August, 2020

Тоже задавался этим вопросом.
Cгенерируйте немножко данных и проверьте использует ли индекс запрос с WHERE IS NULL ( думаю, 80% NULL будет нормально)
Если в плане показано использование индекса — значит в индексе хранятся ссылки на ВСЕ значения NULL, и, соответственно, разницы нет.
Было бы интересно создавать иногда компактные индексы по «разреженным» значениям, где ссылки на NULL-значения не хранятся, но обычно в этом случае делают связь один-к-одному с другой таблицей.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться