на столбце уникальный индекс и обычный. Будет ли дольше происходить вставка и/или выборка если индекс уникальный? Какой индекс лучше использовать, если уникальность проверяется на стороне кода, то есть сначала выбирается запись из базы, и если она есть то апдейтится, если нет, то добавляется новая. Если есть ссылки где это можно почитать, будет еще лучше(в доках не нашел)
Колонка INT база postgresql
> Будет ли дольше происходить вставка и/или выборка если индекс уникальный? Проверка чего-то стоит... но я никогда не измерял (потому что если ограничение уникальности нужно, адекватной альтернативы просто нет — не с чем / незачем сравнивать). > Какой индекс лучше использовать, если уникальность проверяется на стороне кода, то есть сначала выбирается запись из базы, и если она есть то апдейтится, если нет, то добавляется новая. Не стоит проверять уникальность на стороне кода (либо не получится, либо выйдет гораздо "дороже", чем уникальный индекс). Для подобного в PostgreSQL есть лучшие средства (INSERT ... ON CONFLICT ... DO UPDATE). См. https://www.postgresql.org/docs/current/sql-insert.html#SQL-ON-CONFLICT > база postgresql Есть и чат именно про него: https://t.me/pgsql
> Проверка чего-то стоит... но я никогда не измерял (потому что если ограничение уникальности нужно, адекватной альтернативы просто нет — не с чем / незачем сравнивать). по сути нужно просто либо вставить в базу строку, либо обновить существующую, если она уже есть
Тогда вам реально нужно именно то что вам посоветовали > Для подобного в PostgreSQL есть лучшие средства (INSERT ... ON CONFLICT ... DO UPDATE). См. https://www.postgresql.org/docs/current/sql-insert.html#SQL-ON-CONFLICT Один из примеров INSERT INTO distributors (did, dname) VALUES (5, 'Gizmo Transglobal'), (6, 'Associated Computing, Inc') ON CONFLICT (did) DO UPDATE SET dname = EXCLUDED.dname;
Нет разницы
Уникальный индекс делают не из-за скорости ,а из-за логики данных и приложения. Выборка по уникальному индексу быстрее, да, не не из-за каких-то особенностей индекса, а просто тупо потому что при выборе по уникальному индексу ты всегда получишь только одну запись (ну или ноль).
В oracle есть разница , например в pg не знаю.
Нет разницы нет в оракле, ни в PG
Обсуждают сегодня