Вопрос

Я строю сайт сообщества, где вход в систему будет по электронной почте, и участники смогут изменить свое имя/псевдоним.

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

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

Это правильно/лучше?

Обновление: причина в другой таблице в том, что мне нужно вытащить имя пользователя для разных разделов. Например, форумы. Разве не было бы быстрее запросить небольшой стол для каждого имени пользователя для каждого поста в теме?

Это было полезно?

Решение

Как вы думаете, почему второй вариант будет быстрее?

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

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

Обновление, чтобы ответить на обновление на вопрос:

Вторая таблица не меньше с точки зрения количества строк. Основными факторами в поиске SQL являются 1) количество записей в таблице и 2) количество возможных совпадений из индексированной части поиска.

В этом случае количество записей в вашей меньшей таблице будет точно таким же, как и более крупная таблица. И количество возможных соответствующих записей, возвращаемых индексом, всегда будет 1, потому что идентификатор участника уникален.

Количество столбцов в таблице, которую вы ищете, обычно не имеет отношения к времени, необходимому для возврата данных (количество столбцов, которое вы фактически перечисляете в операторе SELEC идет поиск).

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

Другие советы

Я бы оставил его на одной таблице и установил уникальное ограничение на электронную почту в этой таблице.

Я не вижу ни одного преимущества в добавлении другой таблицы.

Перейдите с первым вариантом: сохраните имя/прозвище в таблице участников. Нет необходимости вводить дополнительную таблицу и накладные расходы на соединение, которое идет с ним, в данном случае.

Да, ассоциация идентификатора участника с другими свойствами - это правильный путь.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top