Mysql связь между таблицами - решающий фактор - PullRequest
0 голосов
/ 29 августа 2018

У меня есть таблица users со следующими полями, id, username. Id - это автоинкремент с первичным ключом, и я думаю, должен ли я также иметь username в качестве первичного ключа.

У меня есть другая таблица, audit_results с именем пользователя в качестве внешнего ключа к таблице users

Что является решающим фактором для определения того, какое из следующего отношения (в таблице пользователей будут миллионы пользователей) будет быстрее (при условии, что в будущем будут сложные запросы на объединение).

  1. audit_results.username (связано с user.username) ИЛИ
  2. audit_results.id (относится к user.id)

Имеет ли значение какой-либо тип данных varchar или int в качестве первичного ключа?

enter image description here

enter image description here

1 Ответ

0 голосов
/ 29 августа 2018

varchar(400) - до 400 символов, каждый символ представлен одним байтом (8 бит), поэтому мы можем иметь до 3200 бит.

int(11) - согласно это , int всегда четыре байта (32 бита).

При объединении SQL должен сравнивать определенные значения.

Я думаю, что очевидно, что будет работать быстрее в целом (сколько бит можно сравнить).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...