Когда я должен использовать KEY
, PRIMARY KEY
, UNIQUE KEY
и INDEX
?
mysql
indexing
primary-key
unique-key
sqlperformance
ПОМОГИТЕ
источник
источник
Ответы:
KEY
иINDEX
являются синонимами в MySQL. Они имеют в виду одно и то же. В базах данных вы будете использовать индексы для повышения скорости поиска данных. Индекс обычно создается на колонках , используемых вJOIN
,WHERE
иORDER BY
оговорок.Представьте, что у вас есть таблица с именем
users
и вы хотите найти всех пользователей с фамилией «Смит». Без индекса база данных должна была бы пройти через все записи таблицы: это медленно, потому что чем больше записей в вашей базе данных, тем больше нужно сделать, чтобы найти результат. С другой стороны, индекс поможет базе данных быстро перейти к соответствующим страницам, где хранятся записи «Смита». Это очень похоже на то, как мы, люди, просматриваем каталог телефонной книги, чтобы найти кого-то по фамилии: мы не начинаем поиск по каталогу от обложки к обложке, пока мы вставляем информацию в некотором порядке, который мы можем используйте для быстрого перехода к страницам 'S'.Первичные ключи и уникальные ключи похожи. Первичный ключ - это столбец или комбинация столбцов, которые могут однозначно идентифицировать строку. Это особый случай уникального ключа . Таблица может иметь не более одного первичного ключа, но более одного уникального ключа. Когда вы указываете уникальный ключ для столбца, никакие две отдельные строки в таблице не могут иметь одинаковое значение.
Также обратите внимание, что столбцы, определенные как первичные ключи или уникальные ключи, автоматически индексируются в MySQL.
источник
passengers
с полями(id, first_name, last_name, age, passport_number)
, указанными ниже: обычно вы устанавливаетеid
столбец в качестве первичного ключа. Первичный ключ автоматически является уникальным ключом. Основное отличие состоит в том, что в таблице может быть только один первичный ключ, а столбец не может содержатьNULL
значения. Там нет необходимости , чтобы настроитьid
колонку быть ,UNIQUE
потому что, установив его на первичный ключ, он автоматически гарантирует уникальность ... Тогда вы могли бы также установитьpassport_number
наUNIQUE
так , что не более чем один пассажир ...NULL
в этот столбец, без проблем.KEY и INDEX являются синонимами.
Вы должны добавить индекс, когда измерения производительности и EXPLAIN показывают, что запрос неэффективен из-за отсутствия индекса. Добавление индекса может повысить производительность запросов (но может замедлить изменения в таблице).
Вы должны использовать UNIQUE, если хотите, чтобы значения в этом столбце (или столбцах) были уникальными, чтобы при попытке вставить повторяющиеся значения возникла ошибка.
ПЕРВИЧНЫЙ КЛЮЧ является одновременно уникальным ограничением, а также подразумевает, что столбец НЕ НЕДЕЙСТВИТЕЛЕН. Он используется для идентификации каждого ряда. Это может быть полезно для объединения с другой таблицей через ограничение внешнего ключа. Хотя для таблицы необязательно иметь ПЕРВИЧНЫЙ КЛЮЧ, обычно это хорошая идея.
источник
Первичный ключ не позволяет
NULL
значения, но уникальный ключ позволяетNULL
значения.Мы можем объявить только один первичный ключ в таблице, но таблица может иметь несколько уникальных ключей (назначение столбцов).
источник
PRIMARY KEY
ИUNIQUE KEY
похожи, за исключением того, что он имеет разные функции. Первичный ключ делает строку таблицы уникальной (т. Е. Не может быть двух строк с одинаковым ключом). Вы можете иметь только 1 первичный ключ в таблице базы данных.Уникальный ключ делает столбец таблицы в строке таблицы уникальным (т. Е. Никакая строка таблицы 2 не может иметь одинаковое точное значение). Вы можете иметь более 1 столбца таблицы уникальных ключей (в отличие от первичного ключа, что означает, что только 1 столбец таблицы в таблице является уникальным).
INDEX
также создает уникальность. MySQL (пример) создаст таблицу индексации для столбца, который индексируется. Таким образом, легче получить значение строки таблицы, когда запрос запрашивается в этом столбце индексированной таблицы. Недостатком является то, что если вы делаете много обновлений / удалений / создания, MySQL должен управлять таблицами индексации (и это может быть узким местом производительности).Надеюсь это поможет.
источник
UNIQUE KEY
может быть,NULL
ноPRIMARY KEY
не может бытьNULL
.Уникальные ключи: столбцы, в которых нет двух одинаковых строк
Первичный ключ: коллекция минимального количества столбцов, которые могут однозначно идентифицировать каждую строку в таблице (т. Е. Никакие две строки не похожи во всех столбцах, составляющих первичный ключ). В таблице может быть несколько первичных ключей. Если существует уникальный ключ, то это первичный ключ (а не первичный ключ) в таблице. Если уникального ключа не существует, то потребуется несколько значений столбца, чтобы идентифицировать строку, например (first_name, last_name, Father_name, mother_name), которые в некоторых таблицах могут представлять собой первичный ключ.
Индекс: используется для оптимизации запросов. Если вы собираетесь искать или сортировать результаты на основе какого-либо столбца много раз (например, в основном люди будут искать учащихся по имени, а не по номеру броска), то это можно оптимизировать, если все значения столбца равны " индексируется, например, с помощью алгоритма двоичного дерева.
источник
Первичный ключ - мы можем поместить только один первичный ключ таблицы в таблицу, и мы не можем оставить этот столбец пустым, когда вводим значения в таблицу.
Уникальный ключ - мы можем поместить более одного уникального ключа в таблицу, и мы можем оставить этот столбец пустым, когда вводим значения в таблицу. столбец принимает уникальные значения (не одинаковые), когда мы применили первичный и уникальный ключ.
источник
Первичный ключ используется для работы с разными таблицами. Это основа реляционных баз данных. Если у вас есть база данных книг, лучше создать 2 таблицы - 1) книги и 2) авторов с первичным ключом INT «id». Тогда вы используете идентификатор в книгах вместо имени автора.
Уникальный ключ используется, если вы не хотите иметь повторяющиеся записи. Например, вы можете иметь заголовок в таблице книг и хотите быть уверенным, что для каждого заголовка есть только одна запись.
источник
Уникальный ключ:
Основной ключ
источник