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

Есть БД с данными по вызовам телефонии - номера, длительность.

Что бы исключить заливку дубликатов что лучше сделать:
1) создать колонку с Hash и навесить на неё уникальный индекс. Создать триггер before insert ..., который делает sha512 из добавляемых полей и заносит его в поле Hash.
2) создать просто уникальный индекс на все добавляемые поля.

Скорость вставки не важна.
Мне интереснее сильно ли разбухнет база от уникального индекса по куче полей?

10 ответов

12 просмотров

для начала нужно определиться, как определяется у вас дупликат

Nikolay-Lomakin Автор вопроса
maxp.dev
для начала нужно определиться, как определяется у ...

Так как у вызовов нет уникальных id, то дубликатом считаются записи с одинаковыми полями date, number_a, number_b, duration. Уникальный индекс по нескольким полям вроде как логически правильный путь, но в итоге получается индекс, который покрывает всю таблицу

Nikolay Lomakin
Так как у вызовов нет уникальных id, то дубликатом...

если поля всего 4, то можно сделать на них констрейнт и не заморачиватсья

Nikolay Lomakin
Так как у вызовов нет уникальных id, то дубликатом...

Тут с самой моделью что-то не так, мне кажется — странно / непонятно, почему это считается дубликатом (почему в норме не может быть двух таких записей?).

Nikolay-Lomakin Автор вопроса
Yaroslav Schekin
Тут с самой моделью что-то не так, мне кажется — с...

Это база строгой отчётности. Биллинг по сути.

Nikolay Lomakin
Это база строгой отчётности. Биллинг по сути.

Это не отвечает на мой вопрос. Почему в ту же дату не может быть двух вызовов A -> B одинаковой длительности?

Yaroslav Schekin
Это не отвечает на мой вопрос. Почему в ту же дату...

невозможно установить два соединения в одно и то же время. хотя бы микросекунда, но будет разница. Видимо под date понималась не столько дата, сколько datetime)

Yaroslav Schekin
Если так, то duration в ключе не место. ;)

ну да, оно избыточно получается, для уникальности достаточно и трех полей

Nikolay Lomakin
Это база строгой отчётности. Биллинг по сути.

Сначала разберитесь, откуда у вас дубли. Ни индекс, ни хэш это за вас не сделают.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта