Вопрос

Является ли уникальное ограничение индексом по умолчанию?Если нет, имеет ли уникальное ограничение те же результаты производительности, что и индексированный столбец, при его использовании в SELECT ... WHERE оговорка?

Спасибо

Это было полезно?

Решение

Уникальное ограничение обязательно является индексом.Обычно вы определяете его как "УНИКАЛЬНЫЙ ИНДЕКС".Индекс потребовался бы в любом случае для эффективной реализации уникального ограничения, поэтому его наличие не является недостатком.

Другие советы

Ограничение на самом деле сильно отличается от индекса:Это просто говорит о том, что MySQL должен обеспечивать уникальность для вас.Однако индекс (хотя он может быть уникальным) связан с физическим упорядочением на вашем жестком диске или с дополнительными структурами (обычно деревом), которые обеспечивают эффективный поиск по столбцу.

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

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

Это находится на уровне логического проектирования.

Индекс - это, возможно, полезное средство, помогающее обеспечить соблюдение такого ограничения.

Это на уровне ФИЗИЧЕСКОГО дизайна.

Некоторые продукты СУБД могут выводить определенные физические конструктивные элементы, такие как наличие некоторого индекса, из наличия определенных логических конструктивных элементов, таких как ограничение УНИКАЛЬНОСТИ.Другие могли бы и не делать этого.

УНИКАЛЬНЫЙ на самом деле является ограничением на индекс, так что да, УНИКАЛЬНЫЙ подразумевает, что в поле, для которого вы применяете уникальность, есть индекс.

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

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

Когда вы объявляете первичный ключ, СУБД создает для вас индекс.Вы можете удалить индекс, если хотите, но вы получите ужасную производительность, когда СУБД выполняет сканирование таблиц для проверки уникальности.

Ограничения первичного ключа обеспечивают целостность объекта, в то время как ограничения ССЫЛОК (внешний ключ) обеспечивают ссылочную целостность.Вместе они в значительной степени способствуют обеспечению целостности данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top