Что является лучшим для профиля, числа или имени?

Большинство сайтов, которые имеют своего рода профиль пользователя, или сделает что-то вроде этого:

profile.php? u=123445

или иначе:

profile.php? u=jason. Davis

Таким образом, мне любопытно, это было бы медленнее для использования имени к поиску профиль с php/mysql по сравнению с использованием числа для поиска записи профиля?

5
задан JasonDavis 24 December 2009 в 02:57
поделиться

7 ответов

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

Но обратите внимание на SO: Они делают и то, и другое.

http://stackoverflow.com/users/187606/pekka

Номер для молниеносного быстрого доступа к базе данных.

Имя для хорошего вида и видимости в поисковых системах.

Нет конфликтов с двумя именами, потому что ID - это то, что используется для поиска записи.

Думаю, это лучшее из обоих миров и оптимальное.

Требуется переписывание URL.

12
ответ дан 18 December 2019 в 13:15
поделиться

Оба неверны. Вы не хотите получать profile.php с параметром u = 12345. Вы хотите получить профиль пользователя 12345. Так что используйте /profile/12345.

Прочтите что-нибудь о REST, это круто :)

0
ответ дан 18 December 2019 в 13:15
поделиться

было бы медленнее использовать имя для поиска профиля [...]?

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

0
ответ дан 18 December 2019 в 13:15
поделиться

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

2
ответ дан 18 December 2019 в 13:15
поделиться

Основная проблема, которую я вижу при использовании имени, не в скорости поиска, а в том, что нельзя иметь Джейсона Дэвиса из Омахи, штат Небраска, и еще одного Джейсона Дэвиса из Перта, Западная Австралия.

Конечно, использовать имя во всем, что видит мир, но, чтобы обеспечить уникальность, я бы использовал целое число ID. Это также может ускорить запросы к базе данных, но для меня это будет второстепенной задачей. Сомнительно, что использование строки вызовет слишком много проблем для вашего приложения.

.
1
ответ дан 18 December 2019 в 13:15
поделиться

Если вы используете индекс БД, то он не должен быть заметно медленнее. Но что будет, если у вас два Джейсона Дэвиса? UID-индексы хороши, потому что вы можете гарантировать уникальность.

0
ответ дан 18 December 2019 в 13:15
поделиться

Если имя является ключом в базе данных, то время поиска не должно быть слишком разным, и использование имени даст вам более красивые URL, поэтому я бы посоветовал использовать имена.

-1
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: