2010-03-10 3 views
8

в MySQL, если создать уникальный ключ на двух колонках, скажемMySQL уникальный ключ и индекс

UNIQUE KEY my_key (column1, column2)

является необходимым построить еще один ключ на column1? Моя цель состоит в том, чтобы иметь столбец1 и столбец2, чтобы быть уникальным, и я сделаю много выбора, введенных с помощью столбца1.

+1

только что сделал эксперимент с использованием EXPLAIN, кажется, мне не нужно создавать еще один ключ в столбце1, поскольку mysql будет использовать уникальный ключ при выборе keyed по столбцу1. – Beier

ответ

11

Нет, это не обязательно, потому что индекс вместо (column1, column2) можно использовать вместо индекса только столбца1.

Возможно, вы захотите создать новый индекс только для столбца два, хотя индекс (column1, column2) не подходит при поиске только для (column2).

8

Нет, ваш my_key индекс позаботится о любых запросах на column1 или условиях на column1 И column2. Однако, если вы делаете запросы только column2, тогда вы должны добавить дополнительный индекс для column2, чтобы иметь возможность запрашивать его эффективно.

Кроме того, если оба column1 и column2 являются уникальными, то вы можете рассмотреть возможность использования что-то вроде

[...] 
UNIQUE(column1), 
UNIQUE(column2), 
PRIMARY KEY (column1, column2); 

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

2

УНИКАЛЬНЫЙ индекс - btree-index. Этот индекс сортируется, поэтому вам не нужен второй индекс для первого colummn. Порядок сортировки комбинации также будет работать только для первого столбца, но не только для второго столбца.

Смежные вопросы