Большинство сайтов, которые имеют своего рода профиль пользователя, или сделает что-то вроде этого:
profile.php? u=123445
или иначе:
profile.php? u=jason. Davis
Таким образом, мне любопытно, это было бы медленнее для использования имени к поиску профиль с php/mysql по сравнению с использованием числа для поиска записи профиля?
Поиск строки действительно, вероятно, был бы медленнее, чем числовой в каждом случае. Но разница настолько мала, что никогда не будет замечена. Пока у вас не будет действительно большого количества пользователей.
Но обратите внимание на SO: Они делают и то, и другое.
http://stackoverflow.com/users/187606/pekka
Номер для молниеносного быстрого доступа к базе данных.
Имя для хорошего вида и видимости в поисковых системах.
Нет конфликтов с двумя именами, потому что ID - это то, что используется для поиска записи.
Думаю, это лучшее из обоих миров и оптимальное.
Требуется переписывание URL.
Оба неверны. Вы не хотите получать profile.php с параметром u = 12345. Вы хотите получить профиль пользователя 12345. Так что используйте /profile/12345.
Прочтите что-нибудь о REST, это круто :)
было бы медленнее использовать имя для поиска профиля [...]?
Если бы вы протестировали его, вы бы обнаружили, что нет достаточной разницы, чтобы о нем можно было побеспокоиться. Если вас беспокоит производительность, то это должно беспокоить вас меньше всего.
Имя будет более читабельным и легким для отладки, но имена не гарантированно будут уникальными, поэтому его нужно будет дополнить унификатором (я полагаю, что это слово на самом деле используется в унификации), например, добавлением цифр в конец имени.
Основная проблема, которую я вижу при использовании имени, не в скорости поиска, а в том, что нельзя иметь Джейсона Дэвиса из Омахи, штат Небраска, и еще одного Джейсона Дэвиса из Перта, Западная Австралия.
Конечно, использовать имя во всем, что видит мир, но, чтобы обеспечить уникальность, я бы использовал целое число ID. Это также может ускорить запросы к базе данных, но для меня это будет второстепенной задачей. Сомнительно, что использование строки вызовет слишком много проблем для вашего приложения.
.Если вы используете индекс БД, то он не должен быть заметно медленнее. Но что будет, если у вас два Джейсона Дэвиса? UID-индексы хороши, потому что вы можете гарантировать уникальность.
Если имя является ключом в базе данных, то время поиска не должно быть слишком разным, и использование имени даст вам более красивые URL, поэтому я бы посоветовал использовать имена.