У меня есть веб-приложение, у меня есть концепция пользователей, которая, вероятно, войдет в таблицу пользователей, например:
table: user
username (varchar 32) | email (varchar 64) | fav_color | ...
Мне бы хотелось, чтобы имя пользователя и адрес электронной почты были уникальными, то есть я не могу позволить пользователям иметь одно и то же имя пользователя или один и тот же адрес электронной почты. Я вижу примеры таблиц такого рода всегда вводят первичный ключ с автоинкрементом целого числа.
Не уверен, почему это делается, чтобы потом как-нибудь ускорить запросы по внешним ключам? Например, допустим, у меня есть еще одна таблица, например:
table: grades
username (foreign key?) | grade
Неэффективно ли использовать имя пользователя в качестве внешнего ключа? Я хочу сделать такие запросы, как:
SELECT FROM grades WHERE username = 'john'
так что я думаю, что было бы быстрее вместо этого сделать целочисленный поиск для базы данных?:
SELECT FROM grades WHERE fk_user_id = 20431
Спасибо