У меня есть таблица MySQL с уникальными именами пользователей и другими свойствами. Я читал, что быстрее искать вещи по целочисленному индексу (а не по строке), поэтому я хочу, чтобы каждое имя пользователя имело уникальное целое число.

В настоящее время в моей базе данных есть дополнительная таблица, которая содержит единственное значение: индекс "free". Когда создается новый пользователь, он берет это значение и сопоставляет его с именем пользователя, а затем увеличивает значение в таблице.

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

Adventurous

Ответов: 2

Ответы (2)

Возможно, вам стоит обратить внимание на опцию AUTO_INCREMENT, которую можно использовать следующим образом:

CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name CHAR(30) NOT NULL,
  email CHAR(30) NOT NULL,
  PRIMARY KEY (id)
);

После этого вы можете добавлять новых пользователей, не указывая поле id:

INSERT INTO users (name, email) VALUES ("John Dow", "jdow@email.com"), ("Alice Dow", "adow@gmail.com");

Несмотря на это, когда вы SELECT из users, вы увидите id автоинкремент:

SELECT * from users;

распечатается:

+----+-----------+----------------+
| id |    name   |     email      |
+----+-----------+----------------+
|  1 | John Dow  | jdow@email.com |
|  2 | Alice Dow | adow@gmail.com |
+----+-----------+----------------+

Но, скорее всего, вы не увидите значительного улучшения производительности при использовании числовых идентификаторов. Неименные идентификаторы удобны, если пользователям разрешено менять свои имена. В противном случае я бы придерживался имени пользователя в качестве идентификатора и первичного индекса.

Почему бы вам не хранить целочисленный индекс в той же таблице? Это будет как еще один столбец, который автоматически увеличивается, и вы сможете использовать его для поиска.

2022 WebDevInsider