Уникальное ограничение ключа создает скрытый индекс для таблицы? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть таблица A, в которой есть n количество столбцов: среди них id (первичный ключ), name и org_id. Имена должны быть уникальными в пределах org_id, поэтому я накладываю ограничение уникального ключа на эту пару.

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

Запрос выглядит так:

SELECT * FROM A WHERE name=? and org_id=?

У меня org_id в качестве внешнего ключа к Organizations таблице.

Чтобы ускорить запросы, как я уже упоминал выше, следует ли ввести индекс по столбцу name? Или, может быть, в этом нет необходимости, и индекс уникального ключа (org_id-name) сработает и сделает мои запросы быстрыми?

1 Ответ

1 голос
/ 05 мая 2020

Ограничение UNIQUE уже поддержано индексом. Я предполагаю, что он принимает форму:

constraint uq_1 unique (org_id, name)

Ваш запрос должен быть быстрым уже при использовании «поиска на равенство», как тот, который вы показываете, с использованием предиката:

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