ある種のユーザー プロファイルを持つほとんどのサイトは、次のようなことを行います。
profile.php?u=123445
またはそうでなければ:
profile.php?u=jason.Davis
だから私は興味があります.名前を使用してphp/mysqlでプロファイルを検索するのと、番号を使用してプロファイルレコードを検索するのは遅くなりますか?
文字列ルックアップは、おそらくすべての場合において、数値ルックアップよりもおそらく遅くなります。しかし、違いは非常に小さいため、決して気付かれることはありません。本当に多数のユーザーを獲得するまでは。
しかし、SOをチェックしてください:彼らは両方を行います.
http://stackoverflow.com/users/187606/pekka
非常に高速なデータベース アクセスの数。
見栄えの良さと検索エンジンでの視認性を表す名前。
ID はレコードの検索に使用されるため、2 つの名前が競合することはありません。
それが世界のベストであり、最適だと思います。
ただし、URL の書き換えが必要です。
名前はより読みやすく、デバッグしやすくなりますが、名前は一意であることが保証されていないため、一意化子 (これは実際には統一で使用される単語だと思います) で拡張する必要があります。名前。
名前を使用する際の主な問題は、検索の速度ではなく、ネブラスカ州オマハの Jason Davis と、西オーストラリア州パースの Jason Davis を別の人にすることができないという事実です。
世界中の人が見ることができるものすべてに必ず名前を使用しますが、一意性を確保するために、整数の ID を使用します。これにより、データベースクエリも高速化される可能性がありますが、それは私にとって二次的な懸念事項です. 文字列を使用すると、アプリケーションに過度の不安が生じるとは思えません。
どちらも間違っています。パラメータとして u=12345 を指定すると、profile.php を取得したくありません。ユーザー 12345 のプロファイルを取得したいので、/profile/12345 を使用します。
REST について何か読んでください。クールです :)
名前を使用してプロファイルを検索すると遅くなるでしょうか [...]?
テストしたことがあれば、気にする価値があるほどの違いがないことがわかったはずです。パフォーマンスが気になる場合は、これで心配する必要はありません。
DB インデックスを使用する場合、著しく遅くなることはありません。しかし、Jason Davises が 2 人いる場合はどうなるでしょうか。一意性を保証できるため、UID は便利です。
名前がデータベースのキーである場合、ルックアップ時間はあまり変わらないはずです。また、名前を使用すると見栄えの良い URL が得られるため、名前を使用することをお勧めします。