172 похожих чатов

Подскажите, пожалуйста. У меня есть 3 колонки, в которой значения

могут быть не уникальны, но комбинация значений этих трёх колонок уникальна. Вопрос:
1) Я могу сделать колонку ID - primary key, простой инкримент. А на эти 3 повесить Unique constraint
2) Могу сделать составной Primary key на эти 3 колонки.
Как правильно будет сделать? По логике/производительности.
Сложно сказать редкие ли инсерты, но апдейты и селекты гораздо чаще. Одну из этих 3ёх колонок хочу индексировать, так как по ней часто идут селекты

9 ответов

9 просмотров

Напиши не рандомный, а последовательный генератор данных и посмотри на количествах 100000-500000 записей

Есть дополнительные вопросы: 1) Будут ли у этой таблицы подчиненные таблицы? 2) будут ли апдейты затрагивать значения этих 3 полей, комбинация которых уникальна?

Gamer's Diary Project- Автор вопроса
Юра
Есть дополнительные вопросы: 1) Будут ли у этой та...

1) По идеи нет, её только будут джоинить 2) Нет, они по сути ключ - если один раз занеслась комбинация, то обновляются только другие поля, относящиеся к этой комбинации

Gamer's Diary Project
1) По идеи нет, её только будут джоинить 2) Нет, о...

Если есть 100% уверенность в том, что у этой таблицы не будет подчиненных таблиц, и структура таблицы не будет меняться (а это очень смелые предположения), то можно все три поля ввести в первичный ключ. Если же есть сомнения, то лучше все же создать синтетический ключ в виде автоикрементного ID, а на те три поля наложить индекс unique

Юра
Если есть 100% уверенность в том, что у этой табли...

Никто не мешает потом синтетический unique-констрейнт на вновь добавленном автоинкрементном поде добавить. Гораздо более важна такая штука: могут ли у трёх вышеобозначенных полей быть null-овые значения? Если да, то во-первых, вариант с составным primary key отпадает, а во-вторых, возможно надо будет строить уникальный индекс на с coalesce, т.к. null в любом из полей приводит к игнорированию дублей по двум другим полям.

Radist
Никто не мешает потом синтетический unique-констре...

В 14 если не ошибаюсь это можно побороть, явно указав как интерпретировать NULL

V K
В 14 если не ошибаюсь это можно побороть, явно ука...

Что-то я сходу в документации не нашел, есть только разные варианты match-ей для foreign key. Не подскажете более конкретно синтаксическую конструкцию или ссылку на доку?

V K
В 14 если не ошибаюсь это можно побороть, явно ука...

Я видел такое только в доках к бете 15-й версии: https://www.postgresql.org/docs/15/ddl-constraints.html Конструкция unique nulls distinct/not distinct

Nick Nalbantov
Я видел такое только в доках к бете 15-й версии: h...

да, вы правы - это я напутал, оно в было в бете к 15

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

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
6
Карта сайта