powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Забись в базу с проверкой на дубль
14 сообщений из 14, страница 1 из 1
Забись в базу с проверкой на дубль
    #35209604
Sergey9991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база со строками VARCHAR очень не маленькая. Нужно при записи новой проверять на точное соответствие - если строка есть то не записывать, если нет то записывать.

Пока в голове такие варианты крутятся:

1. WHERE char = '"+char+"'
2. Сделать уникальный индекс и проверять есть ли ошибка при записи, если нет, то писать


Как это лучше сделать, может другие варианты - главное скорость....

ps. Скрипт на Python
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35209615
Sergey9991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чуть не забыл база Mysql5
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210195
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть универсальный способ работающий почти во всех базах:
Код: plaintext
1.
insert into sometable(f1, f2)
select :f1, :f2 where not exists(select * from sometable where f1=:f1 and f2=:f2)
А во многих современных (не знаю про mysql) есть конструкции типа "insert or update" или "insert on conflict replace" и подобное. Читать доку на свой сервер.
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210207
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хранить еще хэш строки, например. И по нему сравнивать.
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210214
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Нахлобуч!
Ты пишешь:

НахлобучН> Хранить еще хэш строки, например. И по нему сравнивать.хэш не гарантирует уникальность.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210227
Sergey9991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА во многих современных
А что значит многие современные?
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210229
C#C++
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, так:

Sergey9991
2. Сделать уникальный индекс и проверять есть ли ошибка при записи, если нет, то писать


В любом случае понадобится индекс для быстрой проверки наличия строки.
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210231
Sergey9991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторinsert into sometable(f1, f2)
select :f1, :f2 where not exists(select * from sometable where f1=:f1 and f2=:f2)
Непонял, сначала записываем, потом выбираем?
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210234
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийхэш не гарантирует уникальность.
Раз в 2^30 обновлений можно и строки посравнивать. Главное, чтоб хэш-функция была устойчивой к коллизиям.
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210240
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Нахлобуч!
Ты пишешь:

НахлобучГлавное, чтоб хэш-функция была устойчивой к коллизиям.переведи

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210292
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийпереведи
Чтоб тяжело было отыскать две строки с одинаковым результирующим хэш-значением.
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210304
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Нахлобуч!
Ты пишешь:

НахлобучН> Чтоб тяжело было отыскать две строки с
Н> одинаковым результирующим хэш-значением.их не нужно искать, они сами найдутся, в самый неподходящий момент.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210312
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийих не нужно искать, они сами найдутся, в самый неподходящий момент.
Есть у меня мысль, что те большие VARCHAR-строки различаются не очень сильно (относительно). Из-за лавинного эффекта хэши все же будут вполне себе различными, а в случае коллизии можно и посимвольно сравнить с теми двумя-тремя строками с одинаковыми хэш-значениями (если такие вообще будут).
...
Рейтинг: 0 / 0
Забись в базу с проверкой на дубль
    #35210377
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey9991 авторinsert into sometable(f1, f2)
select :f1, :f2 where not exists(select * from sometable where f1=:f1 and f2=:f2)
Непонял, сначала записываем, потом выбираем?Читай учебник по SQL: http://www.sql.ru/docs/sql/u_sql/ch15.shtml#15.5
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Забись в базу с проверкой на дубль
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]