Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Индекс созданный руками имеет include, а индекс созданный констрейнтом автоматом - нет.

Как решить проблему и не создавать два индекса?
2 фев 16, 13:37    [18761693]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
Как решить проблему и не создавать два индекса?

Создавайте один
2 фев 16, 13:40    [18761714]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
создать руками 1 нужный
2 фев 16, 13:40    [18761721]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Glory,

Ха, так я как раз и спрашиваю что бы "красивенько" всё было и вдру там у какой-нить зло*бучей ОРМ будет разница от того есть там уникальный индекс или нет при формировании запроса (не профайлером же мне постоянно смотреть это).
2 фев 16, 13:48    [18761807]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
Ха, так я как раз и спрашиваю что бы "красивенько"

Т.е. за вас решить, как будет это "красивенько" ?
Причем для всех сразу, включая все известные зло*бучи ОРМ-ы ?
2 фев 16, 13:52    [18761852]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
NIIIK
Glory,

Ха, так я как раз и спрашиваю что бы "красивенько" всё было и вдру там у какой-нить зло*бучей ОРМ будет разница от того есть там уникальный индекс или нет при формировании запроса (не профайлером же мне постоянно смотреть это).


Так не создавай UNIQUE CONSTRAINT, создай вместо него уникальный индекс с нужными INCLUDE...
Это ж то же самое.
2 фев 16, 13:56    [18761877]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Glory,

"за меня" уже мной решено что мне нужен красивенький уникальный констрейнт и индекс с инклудом одновременно.

вопрос в том как это достичь. Ибо грохнуть просто индекс на UK не получается.
2 фев 16, 14:37    [18762180]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
"за меня" уже мной решено что мне нужен красивенький уникальный констрейнт и индекс с инклудом одновременно.

И еще розового пони впридачу ?

NIIIK
вопрос в том как это достичь. Ибо грохнуть просто индекс на UK не получается.

Написать свой sql сервер
2 фев 16, 14:38    [18762187]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
MasterZiv,

пока так и создано, но такой индекс покажет ошибку только при попытке вставить и нагледненько красивенького констрейнта не будет.

Тем более индекс не только include, а ещё where может содержать в общем случае...

Создать констрейнт без индекса или удалить автоматом созданный меня бы устроило.
2 фев 16, 14:38    [18762188]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
пока так и создано, но такой индекс покажет ошибку только при попытке вставить и нагледненько красивенького констрейнта не будет.

А есть разница в ошибке при констрейнте и уникальном индексе ?
2 фев 16, 14:39    [18762204]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Glory,

есть разница в наглядности для ЛЮДЕЙ когда другие смотрят на базу в смотрении на констрейт и на индекс.
И ХЗ как это повлияет на работы ОРМ (я не в курсе, в конкретном случае используется EF, но бывают и другие в общем случае).
Запросы по разному генерят и потом переодически возникают косяки в духи таких когда вроде делаешь то же самое
https://github.com/linq2db/linq2db/issues/288#issuecomment-156398021
2 фев 16, 14:43    [18762229]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Glory
А есть разница в ошибке при констрейнте и уникальном индексе ?

ну сказалиж

NIIIK
нагледненько красивенького констрейнта не будет.

хотя чем одно красивее другуго ХЗ
/*
Msg 2627, Level 14, State 1, Line 1
Violation of UNIQUE KEY constraint 'UQC_T1_i'. Cannot insert duplicate key in object 'dbo.t1'. The duplicate key value is (<NULL>).
The statement has been terminated.
*/

/*
Msg 2601, Level 14, State 1, Line 1
Cannot insert duplicate key row in object 'dbo.t1' with unique index 'IXQ_T1_i'. The duplicate key value is (<NULL>).
The statement has been terminated.
*/
2 фев 16, 14:44    [18762236]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
есть разница в наглядности для ЛЮДЕЙ когда другие смотрят на базу в смотрении на констрейт и на индекс.

Да что вы говорите !
Так может лучше этим людям одинаковые глазки вставить ? Чтобы они видели одинаково ?

NIIIK
И ХЗ как это повлияет на работы ОРМ (я не в курсе, в конкретном случае используется EF, но бывают и другие в общем случае).

Т.е. нужно все таки за вас протестировать все ОРМ и вам тут выложить результаты ?

NIIIK
Запросы по разному генерят и потом переодически возникают косяки в духи таких когда вроде делаешь то же самое
https://github.com/linq2db/linq2db/issues/288#issuecomment-156398021

Ну так все просто - напишите вообще все с нуля под свои требования
SQL Server
ОРМ
Оп.систему
...
2 фев 16, 14:46    [18762256]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
NIIIK
Glory,

есть разница в наглядности для ЛЮДЕЙ когда другие смотрят на базу в смотрении на констрейт и на индекс.
И ХЗ как это повлияет на работы ОРМ (я не в курсе, в конкретном случае используется EF, но бывают и другие в общем случае).
Запросы по разному генерят и потом переодически возникают косяки в духи таких когда вроде делаешь то же самое
https://github.com/linq2db/linq2db/issues/288#issuecomment-156398021

феерично !!!!! особенно в разверезе обсуждаемой темы..
Ето как раз стоит ли брать на работу скл разработчика или все сможет написать шарпист без понимания скл
2 фев 16, 14:47    [18762258]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Glory,

Вычеслав, как вас с вашей натурой ещё терпят на форуме, неудивительно что он загнивает...

UK чётко показывает уникальность и сам импользует обыкновенный индекс, который нельзя удалить.
Что бы в нём можно было инклуд сделать никто из создалелей СКЛ сервера не подумал.
Что бы его можно было привязать к другому почти такому же индексу или он сам его находил - тоже не подумал.

А те же ОРМки вполне могут смотреть на констрейнты, но не смотрят на индексы в принципе - просто "строят тот запрос который им надо". А когда знаешь что из дочерних таблиц приджойнивается только одна запись и можно выбрать как "расширенные атрибуты" для сущности того же уровня запрос пишется просто.
2 фев 16, 15:22    [18762480]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
Glory
Member

Откуда:
Сообщений: 104751
NIIIK
Вычеслав, как вас с вашей натурой ещё терпят на форуме, неудивительно что он загнивает...

О Пророк, ты пришел ! Слава Богу !
Предскажи еще чего-нибудь !

NIIIK
UK чётко показывает уникальность и сам импользует обыкновенный индекс, который нельзя удалить.
Что бы в нём можно было инклуд сделать никто из создалелей СКЛ сервера не подумал.
Что бы его можно было привязать к другому почти такому же индексу или он сам его находил - тоже не подумал.

Розового пони будете брать ?

NIIIK
А те же ОРМки вполне могут смотреть на констрейнты, но не смотрят на индексы в принципе - просто "строят тот запрос который им надо". А когда знаешь что из дочерних таблиц приджойнивается только одна запись и можно выбрать как "расширенные атрибуты" для сущности того же уровня запрос пишется просто.

Это проблемы MSSQL ?
2 фев 16, 15:25    [18762503]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
NIIIK
MasterZiv,

пока так и создано, но такой индекс покажет ошибку только при попытке вставить и нагледненько красивенького констрейнта не будет.

Тем более индекс не только include, а ещё where может содержать в общем случае...

Создать констрейнт без индекса или удалить автоматом созданный меня бы устроило.



мужик, ну тебе похоже другой глобус надо...

удалить индекс под констрейнтом у тебя не получится никогда.

если тебе так важны оба функционала, ну, создай ДВА индекса, и констрейнтом, и понимающий.
но надо тебе сказать, что покрывающие индексы - это не самое лучшее решение, и если не припекает совсем, лучше ими не баловаться...
2 фев 16, 20:19    [18764246]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
MasterZiv,

мне как раз хотелось тот вариант что описывал,
а создать что-то одно или то и другое, очевидно, я и так понимал.
2 фев 16, 20:32    [18764274]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31962
NIIIK
UK чётко показывает уникальность и сам импользует обыкновенный индекс, который нельзя удалить.
Что бы в нём можно было инклуд сделать никто из создалелей СКЛ сервера не подумал.
Что бы его можно было привязать к другому почти такому же индексу или он сам его находил - тоже не подумал.
Создатели SQL Server реализуют те фичи, которые решают проблемы бизнеса, которые хотят получить люди, платящие безумные бапки за сиквел.
Вот, видимо, не было от людей, платящих деньги, запросов на красивое сообщение в окошечке. Да и не читает никто этих сообщений в бизнес-системах, это больше для инженеров, а они как нибудь переживут.
А кроме красивого сообщение, ничего больше получить нельзя, всё остальное есть.
NIIIK
А те же ОРМки вполне могут смотреть на констрейнты, но не смотрят на индексы в принципе - просто "строят тот запрос который им надо". А когда знаешь что из дочерних таблиц приджойнивается только одна запись и можно выбрать как "расширенные атрибуты" для сущности того же уровня запрос пишется просто.
Ну, это недостаток ORM. Уникальный индекс имеет ровно такую же функциональность для этой ORM, конечно, она должна их использовать наравне.
2 фев 16, 20:36    [18764282]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
NIIIK
MasterZiv,

мне как раз хотелось тот вариант что описывал,
а создать что-то одно или то и другое, очевидно, я и так понимал.


ЕСЛИ ИНДЕКСЫ РАЗНЫЕ, ТО СОЗДАЙ ДВА ИНДЕКСА!

при таблице меньше миллиона это будет стоить копейки.

кажется, до этой простой идеи тоже можно было бы самому додуматься...
2 фев 16, 20:42    [18764293]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
alexeyvg,

какие "красивые сообщения" ?!
В каком "окошечке" Мне банально надо сделать индекс с инклудом и констрейнт без лишнего индекса.

Хотел бы МС СКЛ реализовать "для разработчиков" (а не для тех кто "бешенные бабки" платит, те не особо шарят в принципе что они хотят и как) - уже бы PL/SQL реализовал бы, который в Оракле был в лохматых годах, а МсСКЛ даже на СКЛ Ажур как "наследие" его перенесло "для совсестимости" и благодаря ему и появились разные ORM (Причём от МС тот же Энтити ФВ) и теперь у нас пишутся запросы по сути "на клиенте БД" просто в чуть более красивой обёрке и при правильной пропаганде.

Собственно когда-то давно include к индекса добавили (и по-моему дыже в 2008Р2, а не просто 2008, тут не уверен), а остальное наследие оставили.
2 фев 16, 23:15    [18764693]     Ответить | Цитировать Сообщить модератору
 Re: Как создать unique constraint без идекса или сразу include в индексе FK  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
MasterZiv,

Кажется кому-то можно было дочитаться прежде чем пиндеть с пеной у рта, изначально сказано что эти варианты отдельно или вместе и так известны.

Это как раз тот кто не задумывается о том что автоматом индекс для уникального констрейнта создаётся сразу бы и зафигачил бы индекс после создания констрейнта.

Лишь бы высер какой-то написать, а не по сути ответить.

Американский форум: ты задаёшь вопрос, и потом тебе отвечают.
Израильский форум: ты задаёшь вопрос, и потом тебе задают вопрос.
Русский форум: ты задаёшь вопрос, и потом тебе долго рассказывают, какой–же ты му**к.


Типичный ответ на форуме программистов
"Юнец, прежде чем спрашивать, для начала бы прочитал 300 страниц техдокументации. На 178 странице на латыни всё четко написано"


Накипело просто. Откуда в нас это? Почему чтобы получить ответ на вопрос, все русскоязычные форумы строятся по следующей схеме:

Типичный русский форум:
— Ребята у меня машина сломалась, кажется шина прокололась как мне ее залатать?
— А вы ее когда машину мыли в последний раз?
— Вчера.
— А сколько км пробега у нее?
— 5 000 км.
— А цвет какой?
— Красный.
— А кузов из какой стали?
— Из обычной для всех машин стали.
— Ну кто ездит на мытой вчера красной машине 5000 км да с кузовом из обычной стали? Конечно у вас шина прокололась, смешно что еще коробка не накрылась и вообще как за вами быки то не бегают вы же в красной машине. Хахаха, вы глупый автолюбитель ничего не понимаете.

Или это только мне везет? Причем по разным тематикам, от ведения аквариума и ухода за рыбами до проблем с SQL запросами и интеграцией разных систем (яркий пример sql.ru). Почему перефразированный вопрос на английском языке тут же дает вам необходимую информацию с четким ответом. (хотя бы stackoverflow). Почему индусы, китайцы, немцы да много кто отвечают коротко и по существу и их советы работают. А мы — умничаем и глумимся.


Если бы на медицинских форумах общались так же, как везде...
Новичок: Ребят, у меня проблема - пришел пациент, один глаз работает, другой нет - что делать? Срочно!!
Хирург (старожил): А-а-а-а!! Один глаз не работает, умора! (*ржет*)
Скальпель (старожил): Блин, ламеры достали!
Админ (администратор): Новичок, читайте правила форума, пользуйтесь поиском. Первое предупреждение.
Доктор_Лектор (завсегдатай): Да ладно вам, помогите ему. Не видите - у человека горе.
Гость1: Новичок, а чего ты хочешь-то? Формулируй вопрос правильно.
Новичок: Гость1, я хочу чтобы оба галза видели. Можешь подсказать как это сделать?
Гость1: А-а-а, чтобы оба видели - не знаю тогда. Я по иглоукалыванию специализируюсь.
Новичок: Админ, я пользовался поиском, но ничего не нашел.
Помогите кто-нибудь, пациент на столе лежит, я ему уже легкое вскрыл - не помогает!!
Хирург (старожил): А-а-а!! Легкое вскрыл, я щас уссусь! (*ржет покатом*)
Гость2: Новичок, глазной нерв проверял?
Медбрат (опытный): Новичек, какой глаз не работает - левый или правый?
Админ (администратор): В правилах форума написано, что здесь запрещено задавать вопросы про симметричные органы. Кроме того, по каким словам ты искал? По слову "глаз"? А надо было - по "бинокуларус окулярус".
Вот - [набор ссылок] почитай про то, как надо пользоваться поиском на форумах.
Новичок: Гость2, а где искать глазной нерв? Поменял глаза местами, теперь оба не работают Срочно - что делать, скоро наркоз заканчивается.
Гость3: А пациент какой расы - негроид или монголоид?
Скальпель (старожил): Гость3, а какая разница?
Гость3: Ты хочешь сказать, что между негроидом и монголоидом нет разницы?
Еще Новичка ламером называл =)
Доктор_Лектор (завсегдатай): Между негроидом и монголоидом есть разница, факт.
Новичок: Как узнать расу?
Скальпель (старожил): Спросить у пациента;)
Новичок: Пациент без сознания. Может в паспорте записано?
Скальпель (старожил): Гость3, разница есть, но какая разница в конкретном нашем случае??
Гость3: Скальпель, очевидная. У негроидов глаза большие и навыкате, а у монголоидов щелки глаз узкие - может у пациента просто глазные щели заужены, их надрезать надо.
Новичок: Спасибо, Гость3! Надрезал веки - легче стало вынимать глазные яблоки. Переставил еще раз, не рабоатают shok.gif
ПС: на всякий случай надрезал ноздри и анус.
Новичок: Эй, есть кто-нибудь?
Новичок: Что делать-то?
Новичок: Все, тема закрыта, я его к окулисту направил.
Скальпель (старожил): НОВИЧЕК, А ТЫ ЧТО - НЕ ОКУЛИСТ??? =8-0 Новичок:
Неа. Гинеколог.
Админ (администратор): Новичек, второе предупреждение. Читай правила.
Здесь форум окулистов. Еще одно предупреждение и - бан.
Хирург (старожил): А-а-а-а!! Гинеколог!! Все, сливайте воду, я уссался!
(*ржет*)

(Безжалостно содрано)
2 фев 16, 23:21    [18764712]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить