powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос на собеседовании
25 сообщений из 122, страница 2 из 5
Вопрос на собеседовании
    #38467913
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныSandalTreeДобавлю от себя четвёртое:
пропущено...

Только если ранее не был объявлен/создан другой кластерный индекс:
Спасибо за поправку.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38467919
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeHEAP RID key используется индексом, но в реальности-то он не хранится.
Нету его на странице данных.
Вывод DBCC Page вас не убеждает? Вы полагаете DBCC Page что-то придумывает, а не использует данные страницы?
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38467926
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehowSandalTreeHEAP RID key используется индексом, но в реальности-то он не хранится.
Нету его на странице данных.
Вывод DBCC Page вас не убеждает? Вы полагаете DBCC Page что-то придумывает, а не использует данные страницы?

Не понял вопроса.

Хотел лишь сказать что в хипе индекс ссылается на записи по RID, но RID в самих данных не хранится.

Если я не прав, покажите мне где.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38467951
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeHEAP RID key используется индексом, но в реальности-то он не хранится.
Нету его на странице данных.

SandalTreeНе понял вопроса.

Хотел лишь сказать что в хипе индекс ссылается на записи по RID, но RID в самих данных не хранится.

Если я не прав, покажите мне где.
На страницах данных некластерного индекса он есть и хранится. В самой куче, да, не хранится, ибо незачем.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38468053
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehowSandalTreeHEAP RID key используется индексом, но в реальности-то он не хранится.
Нету его на странице данных.

SandalTreeНе понял вопроса.

Хотел лишь сказать что в хипе индекс ссылается на записи по RID, но RID в самих данных не хранится.

Если я не прав, покажите мне где.
На страницах данных некластерного индекса он есть и хранится. В самой куче, да, не хранится, ибо незачем.Значит консенсус.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38468431
Гость333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторсколько угодно UQ
Не сколько угодно, а не больше 1000 (или 250, зависит от версии) :-)
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38468668
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость333авторсколько угодно UQ
Не сколько угодно, а не больше 1000 (или 250, зависит от версии) :-)А столько обычно и не угодно!
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38468935
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость333авторсколько угодно UQ
Не сколько угодно, а не больше 1000 (или 250, зависит от версии) :-)Ну уж если быть совсем точным, то не больше 999




И кстати, второй вопрос:

Чем отличается UNIQUE CONSTRAINT от UNIQUE NONCLUSTERED INDEX ?

(я пока нашёл только 2 отличия, может кто знает больше?)
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38468949
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeЧем отличается UNIQUE CONSTRAINT от UNIQUE NONCLUSTERED INDEX ?
UNIQUE CONSTRAINT - это декларация уникальности
UNIQUE NONCLUSTERED INDEX - это физическая реализация UNIQUE CONSTRAINT

ЗЫ
Кстати в предыдущих отличиях тоже сильно намешаны декларативные и физические свойства.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38468978
Гость333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeНу уж если быть совсем точным, то не больше 999
Не-а.
Один кластерный + 999 некластерных.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38468980
Фотография Exproment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость333Один кластерный + 999 некластерных.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38468985
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlorySandalTreeЧем отличается UNIQUE CONSTRAINT от UNIQUE NONCLUSTERED INDEX ?
UNIQUE CONSTRAINT - это декларация уникальности
UNIQUE NONCLUSTERED INDEX - это физическая реализация UNIQUE CONSTRAINT

ЗЫ
Кстати в предыдущих отличиях тоже сильно намешаны декларативные и физические свойства.

Вроде ты прав.
Это должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.

Так?
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469004
Гость333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уникальный индекс может быть фильтрованным.
Для ограничения уникальности фильтр установить нельзя.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469034
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeЭто должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.

Так?
Трудно сравнивать разные вещи
Можно ли говорить, например, насколько 2 в степени 3 отличается от 2*2*2 или от 2+2+2+2 ?
С одной сильно отличается, с другой стороны - результат одинаков.
А если углубится в технические детали реализации этих операций в каких то процессорах, то можно просто погрязнуть в деталях.
Лучше сначала определится, до какого уровня происходит сравнение.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469063
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость333SandalTreeНу уж если быть совсем точным, то не больше 999
Не-а.
Один кластерный + 999 некластерных.Мы говорили про UNIQUE CONSTRAINT, а их может быть не больше чем 999 на таблицу.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469067
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlorySandalTreeЭто должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.

Так?
Трудно сравнивать разные вещи
Можно ли говорить, например, насколько 2 в степени 3 отличается от 2*2*2 или от 2+2+2+2 ?
С одной сильно отличается, с другой стороны - результат одинаков.
А если углубится в технические детали реализации этих операций в каких то процессорах, то можно просто погрязнуть в деталях.
Лучше сначала определится, до какого уровня происходит сравнение.

Деталей-то вроде не сильно много что-б погрязнуть. Или я вижу только верхушку айсберга?
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469070
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость333Уникальный индекс может быть фильтрованным.
Для ограничения уникальности фильтр установить нельзя.

Правильно. Другими словами возможна ситуация когда уникальный индекс по некоторому полю не предотвращает наличие неуникальных записей.

Ещё что?
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469087
Гость333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeГость333пропущено...

Не-а.
Один кластерный + 999 некластерных.Мы говорили про UNIQUE CONSTRAINT, а их может быть не больше чем 999 на таблицу.
Некластерных UQ — не больше чем 999.
Плюс один кластерный.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table t
( id int,
  constraint t_uq_1 unique clustered(id),
  constraint t_uq_2 unique nonclustered(id),
  constraint t_uq_3 unique nonclustered(id),
  constraint t_uq_4 unique nonclustered(id),
  ...
  constraint t_uq_1000 unique nonclustered(id)
)


Код для создания такой таблицы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
declare @sql nvarchar(max);

set @sql = N'create table t
( id int,
  constraint t_uq_1 unique clustered(id)';

declare @i int;

set @i = 2;

while @i <= 1000
begin
  set @sql = @sql + N',
  constraint t_uq_' + cast(@i as nvarchar(30)) + N' unique nonclustered(id)';

  set @i = @i + 1;
end;

set @sql = @sql + N'
)';

exec sp_executesql @sql;

exec sp_help 't';

...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469142
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость333SandalTreeпропущено...
Мы говорили про UNIQUE CONSTRAINT, а их может быть не больше чем 999 на таблицу.
Некластерных UQ — не больше чем 999.
Плюс один кластерный.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table t
( id int,
  constraint t_uq_1 unique clustered(id),
  constraint t_uq_2 unique nonclustered(id),
  constraint t_uq_3 unique nonclustered(id),
  constraint t_uq_4 unique nonclustered(id),
  ...
  constraint t_uq_1000 unique nonclustered(id)
)




Понял идею. Хитро.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469266
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlorySandalTreeЭто должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.

Так?
Трудно сравнивать разные вещи
Можно ли говорить, например, насколько 2 в степени 3 отличается от 2*2*2 или от 2+2+2+2 ?
С одной сильно отличается, с другой стороны - результат одинаков.
А если углубится в технические детали реализации этих операций в каких то процессорах, то можно просто погрязнуть в деталях.
Лучше сначала определится, до какого уровня происходит сравнение.
Глоря, вот обьясни мне ещё такую вещь.
Код: sql
1.
2.
3.
4.
5.
6.
7.
USE msdb
GO
SELECT i.* , c.name as column_name
FROM sys.indexes as i 
INNER JOIN sys.index_columns as ic on i.index_id = ic.index_id and i.object_id = ic.object_id
INNER JOIN sys.columns as c on ic.column_id = c.column_id and i.object_id = c.object_id
WHERE i.object_id = object_id('log_shipping_primary_databases') and i.index_id != 1 and i.is_unique = 1


В 2012м в Стандарте и Экспрессе + 2008R2 Энтерпрайз выдаёт что у "log_shipping_primary_databases" один UNIQUE CONSTRAINT (ака индекс) и ещё один UNIQUE NONCLUSTERED INDEX по тому-же полю.

Там какой-то потаённый смысл в 2-х одинаковых индексах или это просто баг?
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469317
Фотография Ruuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeЭто должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.Смотря что под этим иметь ввиду.
Если использовать уникальный индекс для ограничения уникальности, то однажды можно столкнуться с ситуацией, что этот индекс кому-то помешал, и этот кто-то не долго мудрствуя удалил индекс.
А с уникальным констрейнтом этот кто-то получит ошибку:
Код: sql
1.
An explicit DROP INDEX is not allowed on index 'some_index'. It is being used for UNIQUE KEY constraint enforcement.


Что заставит его еще раз подумать о необходимости удаления.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469320
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuuuSandalTreeЭто должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.Смотря что под этим иметь ввиду.
Если использовать уникальный индекс для ограничения уникальности, то однажды можно столкнуться с ситуацией, что этот индекс кому-то помешал, и этот кто-то не долго мудрствуя удалил индекс.
А с уникальным констрейнтом этот кто-то получит ошибку:
Код: sql
1.
An explicit DROP INDEX is not allowed on index 'some_index'. It is being used for UNIQUE KEY constraint enforcement.


Что заставит его еще раз подумать о необходимости удаления.
Притянул за уши.

Если выскакивает ошибка:
Msg 2627, Level 14, State 1, Line 1
Violation of UNIQUE KEY constraint 'UC_B1000' . Cannot insert duplicate key in object 'dbo.B'. The duplicate key value is (A).
The statement has been terminated.

То она как-бы сразу говорит чего нужно удалять.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469324
Фотография Ruuu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeRuuuпропущено...
Смотря что под этим иметь ввиду.
Если использовать уникальный индекс для ограничения уникальности, то однажды можно столкнуться с ситуацией, что этот индекс кому-то помешал, и этот кто-то не долго мудрствуя удалил индекс.
А с уникальным констрейнтом этот кто-то получит ошибку:
Код: sql
1.
An explicit DROP INDEX is not allowed on index 'some_index'. It is being used for UNIQUE KEY constraint enforcement.



Что заставит его еще раз подумать о необходимости удаления.
Притянул за уши.

Если выскакивает ошибка:
Msg 2627, Level 14, State 1, Line 1
Violation of UNIQUE KEY constraint 'UC_B1000' . Cannot insert duplicate key in object 'dbo.B'. The duplicate key value is (A).
The statement has been terminated.

То она как-бы сразу говорит чего нужно удалять. Я имел ввиду, конечно, не это, а ситуацию, когда план неоптимальный из-за этого индекса строится или медленно идет обновление/вставка, и/или в запросах он не используется.
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469333
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuuuЯ имел ввиду, конечно, не это, а ситуацию, когда план неоптимальный из-за этого индекса строится или медленно идет обновление/вставка, и/или в запросах он не используется.Я так ду что этот индекс должен использоваться, ибо во время каждой ставки должен шерститься.

И если в базу влез тюнер, который без разбору и проверки индексы мочит, то тут никакой UC уже не поможет.

Да, кстати, этот даже и неплохо. Тебе потом через неделю звонок, а у нас тут данные хреновые.
Ты 4 часа потратил - разбирался (это гуд, ибо тебе за это платят) потом выложил на стол доказательства и ещё 4 часа на починку.
Вот так один му**к тебя на целый день работой обеспечил. А знаешь сколько таких мудаков в мире...
...
Рейтинг: 0 / 0
Вопрос на собеседовании
    #38469482
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTreeТам какой-то потаённый смысл в 2-х одинаковых индексах или это просто баг?
Я вам про это уже говорил
Primary KEY, Unique Constraint - это только _декларация_
Грубо говоря, только запись в списке объектов, которая ссылается на другой _физический_ объект.
Физическим же объектом для этих ограничений всегда является индекс.

Ваши два вопроса с собеседования на мой взгляд были заданы для того, чтобы выяснить, понимате ли вы разницу между физическим и логическим уровнями.
...
Рейтинг: 0 / 0
25 сообщений из 122, страница 2 из 5
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос на собеседовании
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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