Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Сон Веры Павловны
SandalTree
Добавлю от себя четвёртое:
пропущено...

Только если ранее не был объявлен/создан другой кластерный индекс:

Спасибо за поправку.
17 ноя 13, 20:13    [15144557]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
SandalTree
HEAP RID key используется индексом, но в реальности-то он не хранится.
Нету его на странице данных.

Вывод DBCC Page вас не убеждает? Вы полагаете DBCC Page что-то придумывает, а не использует данные страницы?
17 ноя 13, 20:42    [15144634]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
SomewhereSomehow
SandalTree
HEAP RID key используется индексом, но в реальности-то он не хранится.
Нету его на странице данных.

Вывод DBCC Page вас не убеждает? Вы полагаете DBCC Page что-то придумывает, а не использует данные страницы?


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

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

Если я не прав, покажите мне где.
17 ноя 13, 20:55    [15144673]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
SandalTree
HEAP RID key используется индексом, но в реальности-то он не хранится.
Нету его на странице данных.

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

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

Если я не прав, покажите мне где.

На страницах данных некластерного индекса он есть и хранится. В самой куче, да, не хранится, ибо незачем.
17 ноя 13, 21:38    [15144824]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
SomewhereSomehow
SandalTree
HEAP RID key используется индексом, но в реальности-то он не хранится.
Нету его на странице данных.

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

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

Если я не прав, покажите мне где.

На страницах данных некластерного индекса он есть и хранится. В самой куче, да, не хранится, ибо незачем.
Значит консенсус.
18 ноя 13, 01:02    [15145705]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Гость333
Member

Откуда:
Сообщений: 3683
автор
сколько угодно UQ

Не сколько угодно, а не больше 1000 (или 250, зависит от версии) :-)
18 ноя 13, 12:47    [15147423]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Гость333
автор
сколько угодно UQ

Не сколько угодно, а не больше 1000 (или 250, зависит от версии) :-)
А столько обычно и не угодно!
18 ноя 13, 15:04    [15148734]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Гость333
автор
сколько угодно UQ

Не сколько угодно, а не больше 1000 (или 250, зависит от версии) :-)
Ну уж если быть совсем точным, то не больше 999




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

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

(я пока нашёл только 2 отличия, может кто знает больше?)
18 ноя 13, 17:35    [15150079]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Glory
Member

Откуда:
Сообщений: 104751
SandalTree
Чем отличается UNIQUE CONSTRAINT от UNIQUE NONCLUSTERED INDEX ?

UNIQUE CONSTRAINT - это декларация уникальности
UNIQUE NONCLUSTERED INDEX - это физическая реализация UNIQUE CONSTRAINT

ЗЫ
Кстати в предыдущих отличиях тоже сильно намешаны декларативные и физические свойства.
18 ноя 13, 17:44    [15150145]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SandalTree
Ну уж если быть совсем точным, то не больше 999

Не-а.
Один кластерный + 999 некластерных.
18 ноя 13, 18:07    [15150273]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Exproment
Member

Откуда:
Сообщений: 416
Гость333
Один кластерный + 999 некластерных.

18 ноя 13, 18:10    [15150298]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Glory
SandalTree
Чем отличается UNIQUE CONSTRAINT от UNIQUE NONCLUSTERED INDEX ?

UNIQUE CONSTRAINT - это декларация уникальности
UNIQUE NONCLUSTERED INDEX - это физическая реализация UNIQUE CONSTRAINT

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


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

Так?
18 ноя 13, 18:12    [15150311]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Уникальный индекс может быть фильтрованным.
Для ограничения уникальности фильтр установить нельзя.
18 ноя 13, 18:30    [15150400]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Glory
Member

Откуда:
Сообщений: 104751
SandalTree
Это должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.

Так?

Трудно сравнивать разные вещи
Можно ли говорить, например, насколько 2 в степени 3 отличается от 2*2*2 или от 2+2+2+2 ?
С одной сильно отличается, с другой стороны - результат одинаков.
А если углубится в технические детали реализации этих операций в каких то процессорах, то можно просто погрязнуть в деталях.
Лучше сначала определится, до какого уровня происходит сравнение.
18 ноя 13, 18:48    [15150478]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Гость333
SandalTree
Ну уж если быть совсем точным, то не больше 999

Не-а.
Один кластерный + 999 некластерных.
Мы говорили про UNIQUE CONSTRAINT, а их может быть не больше чем 999 на таблицу.
18 ноя 13, 19:10    [15150572]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Glory
SandalTree
Это должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.

Так?

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


Деталей-то вроде не сильно много что-б погрязнуть. Или я вижу только верхушку айсберга?
18 ноя 13, 19:12    [15150577]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Гость333
Уникальный индекс может быть фильтрованным.
Для ограничения уникальности фильтр установить нельзя.


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

Ещё что?
18 ноя 13, 19:14    [15150584]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SandalTree
Гость333
пропущено...

Не-а.
Один кластерный + 999 некластерных.
Мы говорили про UNIQUE CONSTRAINT, а их может быть не больше чем 999 на таблицу.

Некластерных UQ — не больше чем 999.
Плюс один кластерный.
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)
)

+ Код для создания такой таблицы
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';
18 ноя 13, 19:28    [15150618]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Гость333
SandalTree
пропущено...
Мы говорили про UNIQUE CONSTRAINT, а их может быть не больше чем 999 на таблицу.

Некластерных UQ — не больше чем 999.
Плюс один кластерный.
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)
)



Понял идею. Хитро.
18 ноя 13, 20:18    [15150805]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Glory
SandalTree
Это должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.

Так?

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

Глоря, вот обьясни мне ещё такую вещь.
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-х одинаковых индексах или это просто баг?
19 ноя 13, 00:30    [15151696]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
SandalTree
Это должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.
Смотря что под этим иметь ввиду.
Если использовать уникальный индекс для ограничения уникальности, то однажды можно столкнуться с ситуацией, что этот индекс кому-то помешал, и этот кто-то не долго мудрствуя удалил индекс.
А с уникальным констрейнтом этот кто-то получит ошибку:
An explicit DROP INDEX is not allowed on index 'some_index'. It is being used for UNIQUE KEY constraint enforcement.

Что заставит его еще раз подумать о необходимости удаления.
19 ноя 13, 05:20    [15152066]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Ruuu
SandalTree
Это должно означать что UNIQUE CONSTRAINT не имеет каких-либо особенных свойств которых нет у UNIQUE NONCLUSTERED INDEX.
Смотря что под этим иметь ввиду.
Если использовать уникальный индекс для ограничения уникальности, то однажды можно столкнуться с ситуацией, что этот индекс кому-то помешал, и этот кто-то не долго мудрствуя удалил индекс.
А с уникальным констрейнтом этот кто-то получит ошибку:
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.

То она как-бы сразу говорит чего нужно удалять.
19 ноя 13, 06:08    [15152073]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
SandalTree
Ruuu
пропущено...
Смотря что под этим иметь ввиду.
Если использовать уникальный индекс для ограничения уникальности, то однажды можно столкнуться с ситуацией, что этот индекс кому-то помешал, и этот кто-то не долго мудрствуя удалил индекс.
А с уникальным констрейнтом этот кто-то получит ошибку:
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.

То она как-бы сразу говорит чего нужно удалять.
Я имел ввиду, конечно, не это, а ситуацию, когда план неоптимальный из-за этого индекса строится или медленно идет обновление/вставка, и/или в запросах он не используется.
19 ноя 13, 06:19    [15152079]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Ruuu
Я имел ввиду, конечно, не это, а ситуацию, когда план неоптимальный из-за этого индекса строится или медленно идет обновление/вставка, и/или в запросах он не используется.
Я так ду что этот индекс должен использоваться, ибо во время каждой ставки должен шерститься.

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

Да, кстати, этот даже и неплохо. Тебе потом через неделю звонок, а у нас тут данные хреновые.
Ты 4 часа потратил - разбирался (это гуд, ибо тебе за это платят) потом выложил на стол доказательства и ещё 4 часа на починку.
Вот так один му**к тебя на целый день работой обеспечил. А знаешь сколько таких мудаков в мире...
19 ноя 13, 06:45    [15152091]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Glory
Member

Откуда:
Сообщений: 104751
SandalTree
Там какой-то потаённый смысл в 2-х одинаковых индексах или это просто баг?

Я вам про это уже говорил
Primary KEY, Unique Constraint - это только _декларация_
Грубо говоря, только запись в списке объектов, которая ссылается на другой _физический_ объект.
Физическим же объектом для этих ограничений всегда является индекс.

Ваши два вопроса с собеседования на мой взгляд были заданы для того, чтобы выяснить, понимате ли вы разницу между физическим и логическим уровнями.
19 ноя 13, 10:33    [15152790]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить