Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Если при вставке возможны попытки добавления уже существующего ключа.
Что лучше с точки зрения оптимальности, скорости?

1. CONSTRAINT с IGNORE_DUP_KEY?
2. проверять NOT EXISTS?
3. TRIGGER instead of?
27 июн 14, 11:34    [16227865]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
как минимум добавить проверку в процедуру вставки данных
27 июн 14, 11:36    [16227889]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37010
ИМХО IGNORE_DUP_KEY
27 июн 14, 11:44    [16227971]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Wizandr
ИМХО IGNORE_DUP_KEY

Ошибки все равно надо обрабатывать и проектировать так,что б такого варианта не было
27 июн 14, 11:57    [16228104]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
MX_User
Member

Откуда:
Сообщений: 27
Merge into ?
27 июн 14, 12:28    [16228332]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Maxx
Wizandr
ИМХО IGNORE_DUP_KEY

Ошибки все равно надо обрабатывать и проектировать так,что б такого варианта не было


это ясно, но не всегда удается.
Ну и речь об оптимальности, то есть вставлять большой объем без проверок, дубли игнорирутся там внутри
27 июн 14, 12:43    [16228433]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
IGNORE_DUP_KEY обслуживается системой, а не программным кодом.
27 июн 14, 13:00    [16228552]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2996
Winnipuh, чаще использую IGNORE_DUP_KEY
но он возможен только при кластерном индексе, а это не всегда правильно (кластерный необходим по другим критериям)
тогда использую exists
27 июн 14, 13:15    [16228679]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
HandKot
но он возможен только при кластерном индексе
Наличие кластерного индекса необязательно.
27 июн 14, 13:28    [16228780]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Почему кластерный? Первичный ключ не обязан быть кластерным индексом.
27 июн 14, 13:28    [16228785]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
MX_User
Member

Откуда:
Сообщений: 27
Зачем exists ? Двойная работа: сначала читаем, потом пишем....
продолжаем игнорировать merge
27 июн 14, 14:09    [16229079]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
MX_User
Зачем exists ? Двойная работа: сначала читаем, потом пишем....
продолжаем игнорировать merge
А MERGE, значит, пишет, не читая?
27 июн 14, 14:13    [16229106]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
MX_User
Зачем exists ? Двойная работа: сначала читаем, потом пишем....
продолжаем игнорировать merge


я думал, что merge фактически делает проверки типа exists
27 июн 14, 14:27    [16229198]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Winnipuh
MX_User
Зачем exists ? Двойная работа: сначала читаем, потом пишем....
продолжаем игнорировать merge


я думал, что merge фактически делает проверки типа exists
+100500
27 июн 14, 14:28    [16229202]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
iap
Winnipuh
пропущено...


я думал, что merge фактически делает проверки типа exists
+100500
На самом деле нечто типа FULL JOIN
27 июн 14, 14:28    [16229204]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
iap
iap
пропущено...
+100500
На самом деле нечто типа FULL JOIN


на больших таблицах будет дороговато
27 июн 14, 15:49    [16229856]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше: IGNORE_DUP_KEY или NOT EXISTS?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Winnipuh
на больших таблицах будет дороговато
Чо эта? За один seek найти нужную страницу, потом с ней делать что захочется - вставлять запись, обновлять, удалять.
27 июн 14, 15:55    [16229923]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить