запросить таблицу в MySQL, которая не имеет первичного ключа - PullRequest
0 голосов
/ 01 декабря 2011

Я новичок в базе данных и столкнулся с проблемой времени при запросе таблицы, в которой поле не указано как первичный ключ.

, например

+ ----------- + ---------- + ------ + ----- + --------- + ------- +

|Поле |Тип |Null |Ключ |По умолчанию |Extra |

+ ----------- + ---------- + ------ + ----- + --------- + ------- +

|a_id |символ (10) |НЕТ ||||

|СМИ |символ (3) |ДА ||NULL ||

|этикетка |символ (37) |ДА ||NULL ||


Как видите, ни у одного поля нет спецификации ключа.Когда я делаю запрос типа «выбрать метку из таблицы, где a_id =?», Запрос очень медленный.Это вызвано отсутствием первичного ключа?

спасибо,

1 Ответ

2 голосов
/ 01 декабря 2011

Нет, это связано с отсутствием индексов.Первичный ключ должен содержать уникальное и ненулевое значение.Если вы добавите индекс к столбцу, он может содержать дубликаты, но ваш запрос все равно будет выполняться быстрее.

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

Это может быть удобно, если вы хотите, чтобы таблица имела идентификатор и описание, которые должны быть уникальными.Обычно вы делаете id первичным ключом, а описание просто уникальным.

...