При отбрасывании ограничения будут также отброшены индексы поддержки?

Я пытаюсь запомнить некоторый синтаксис SQL, и я свалил ОГРАНИЧИТЕЛЬНЫЙ синтаксис ADD ALTER TABLE. Я полагаю, что я корректен, когда я говорю что, когда Вы используете этот синтаксис для добавления FOREIGN KEY или ограничения PRIMARY KEY, что SQL-сервер автоматически создает индексы для поддержки ограничительных операций. (Который верен..., или действительно ли это только верно на PK, но не FK?)

Если так, когда Вы используете ОГРАНИЧИТЕЛЬНЫЙ синтаксис ОТБРАСЫВАНИЯ ALTER TABLE... индексы поддержки, автоматически отброшенные также? Эти неявные индексы поддержки могут быть явно отброшены? Раз так ОГРАНИЧЕНИЕ автоматически удалено?

Я просто желаю знать, как это работает "под покрытиями". Поиск с помощью Google не помог. Я предполагаю, что, возможно, запросил некоторые sys таблицы для обнаружения истины, но думал, что я попробую здесь вместо этого.

Спасибо за помощь.

Seth

6
задан Seth Spearman 18 February 2010 в 20:20
поделиться

4 ответа

Когда вы добавляете первичный ключ, на самом деле добавляется уникальный индекс. Будет ли этот индекс кластеризован в результате добавления, зависит от того, указали ли вы, чтобы он был некластеризованным или нет. Если при добавлении ограничения первичного ключа вы не указали, что оно является кластерным или некластерным, оно будет кластерным, если кластерное ограничение или индекс еще не существует в таблице, в противном случае оно будет некластерным.

При добавлении внешнего ключа индекс автоматически не создается.

При удалении ограничения все индексы, созданные в результате создания ограничения, будут удалены. Однако если вы попытаетесь отбросить ограничение уникального или первичного ключа и при этом существуют ограничения внешнего ключа, которые ссылаются на него, вы получите ошибку.

Индексы, созданные в результате создания ограничений, не могут быть удалены с помощью DROP INDEX.

2
ответ дан 16 December 2019 в 21:39
поделиться

FK не получают автоматически индекс в SQL Server, если вам нужен индекс, вам нужно его добавить! При отбрасывании FK вы не отбрасываете индекс, вам нужно будет удалить индекс самостоятельно.

2
ответ дан 16 December 2019 в 21:39
поделиться

Индекс, обеспечивающий ограничение UNIQUE, будет удален, один индекс, поддерживающий ограничение FK, не будет удален автоматически. Он также не будет создан автоматически.

2
ответ дан 16 December 2019 в 21:39
поделиться

Ограничение первичного ключа добавит в таблицу кластеризованный индекс, если он еще не существует, в противном случае для него будет создан уникальный некластеризованный индекс.

Удаление ограничения первичного ключа также приведет к удалению базового индекса.

Ограничение внешнего ключа не добавляет индекс.

Удаление ограничения внешнего ключа ничего не сделает с индексом.

Внешние ключи не имеют ничего общего с индексами.

2
ответ дан 16 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: