Если я наложу ограничение «UNIQUE» на столбец, будет ли ядро ​​базы данных проходить всю таблицу для вхождения, что будет влиять на производительность? - PullRequest
0 голосов
/ 04 июля 2018

Если я наложу ограничение «УНИКАЛЬНОЕ» на столбец, обработает ли ядро ​​базы данных всю таблицу для вхождения, что повлияет на производительность?

Если у меня есть таблица с миллионами записей, должен ли механизм проверять каждое поле в столбце, чтобы определить, совпадает ли ввод с одним из полей?

Как это работает?

1 Ответ

0 голосов
/ 04 июля 2018

Нет. Ограничение unique создает уникальный индекс. Индекс используется для проверки ограничения. Индекс также можно использовать и для других целей.

Насколько я знаю, все базы данных, включая MySQL, реализуют такой индекс с использованием B-дерева. Поиск - это O (log (n)), где n - количество записей в таблице.

Разница между уникальным индексом и уникальным ограничением является косметической. Нарушение уникального ограничения возвращает имя ограничения; нарушение уникального индекса возвращает имя индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...