|
|
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Есть база со строками VARCHAR очень не маленькая. Нужно при записи новой проверять на точное соответствие - если строка есть то не записывать, если нет то записывать. Пока в голове такие варианты крутятся: 1. WHERE char = '"+char+"' 2. Сделать уникальный индекс и проверять есть ли ошибка при записи, если нет, то писать Как это лучше сделать, может другие варианты - главное скорость.... ps. Скрипт на Python ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 13:35 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
чуть не забыл база Mysql5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 13:36 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Есть универсальный способ работающий почти во всех базах: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 16:50 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Хранить еще хэш строки, например. И по нему сравнивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 16:54 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Привет, Нахлобуч! Ты пишешь: НахлобучН> Хранить еще хэш строки, например. И по нему сравнивать.хэш не гарантирует уникальность. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 16:56 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
авторА во многих современных А что значит многие современные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:02 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Думаю, так: Sergey9991 2. Сделать уникальный индекс и проверять есть ли ошибка при записи, если нет, то писать В любом случае понадобится индекс для быстрой проверки наличия строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:02 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
авторinsert into sometable(f1, f2) select :f1, :f2 where not exists(select * from sometable where f1=:f1 and f2=:f2) Непонял, сначала записываем, потом выбираем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:04 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийхэш не гарантирует уникальность. Раз в 2^30 обновлений можно и строки посравнивать. Главное, чтоб хэш-функция была устойчивой к коллизиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:04 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Привет, Нахлобуч! Ты пишешь: НахлобучГлавное, чтоб хэш-функция была устойчивой к коллизиям.переведи -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:07 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийпереведи Чтоб тяжело было отыскать две строки с одинаковым результирующим хэш-значением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:24 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Привет, Нахлобуч! Ты пишешь: НахлобучН> Чтоб тяжело было отыскать две строки с Н> одинаковым результирующим хэш-значением.их не нужно искать, они сами найдутся, в самый неподходящий момент. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:27 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийих не нужно искать, они сами найдутся, в самый неподходящий момент. Есть у меня мысль, что те большие VARCHAR-строки различаются не очень сильно (относительно). Из-за лавинного эффекта хэши все же будут вполне себе различными, а в случае коллизии можно и посимвольно сравнить с теми двумя-тремя строками с одинаковыми хэш-значениями (если такие вообще будут). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:30 |
|
||
|
Забись в базу с проверкой на дубль
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2008, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35210240&tid=1345423]: |
0ms |
get settings: |
5ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 484ms |

| 0 / 0 |
