«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Могут ли существовать столбцы с автоинкрементом, не являясь первичным ключом в MySQL?

Могут ли существовать столбцы с автоинкрементом, не являясь первичным ключом в MySQL?

Опубликовано 4 ноября 2024 г.
Просматривать:365

Can Auto-Increment Columns Exist Without Being the Primary Key in MySQL?

Устранение ошибки неправильного определения таблицы: балансировка автоинкремента и первичного ключа

Сценарий включает таблицу MySQL, в которой столбец id служит полем автоинкремента для визуальных для удобства, а столбецmemberid действует как фактический уникальный ключ. Однако попытка определить таблицу с помощью PRIMARY KEY (memberid) приводит к ошибке (1075), в которой говорится, что может быть только один автоматический столбец, и это должен быть ключ.

Устранение ошибки: сохранение автоматического приращения и уникальный ключ

Чтобы решить эту проблему, можно иметь столбец с автоматическим приращением, который не является ПЕРВИЧНЫМ КЛЮЧОМ, при условии, что для него определен индекс (ключ). Вот измененное определение таблицы:

CREATE TABLE members (
  id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  memberid VARCHAR(30) NOT NULL,
  `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  firstname VARCHAR(50) NULL,
  lastname VARCHAR(50) NULL,
  PRIMARY KEY (memberid),
  KEY (id)                          # or: UNIQUE KEY (id)
) ENGINE = MYISAM;

При добавлении индекса KEY или UNIQUE KEY в столбец id сохраняется функция автоматического приращения, в то время как столбецmemberid становится первичным ключом, что позволяет эффективно выполнять запросы на основе значенияmemberid.

Выбор оптимального подхода: баланс между производительностью и пространством

Лучший выбор зависит от относительной важности производительности и дискового пространства. Если производительность имеет первостепенное значение, поддержание столбца идентификаторов с автоматическим приращением и использование индекса по идентификатору участника обеспечивают баланс:

  • Идентификатор с автоматическим приращением обеспечивает эффективную сортировку и диапазон запросов.
  • индекс поmemberid обеспечивает быстрый поиск с использованием уникального идентификатора участника.

Однако, если дисковое пространство является серьезной проблемой, рассмотрите возможность полного удаления столбца id и использования столбцаmemberid как первичного ключа, так и автоматического - инкрементное поле. Этот подход жертвует некоторой производительностью ради улучшения использования пространства. В конечном итоге выбор между производительностью и пространством зависит от конкретных требований приложения.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3