答えて
実際にアプリケーションの要件に基づいているため、質問はディスカッションのように思えます。しかし、私は一般的な答えを与える理由は、UserIDがパフォーマンスのために良いです。ユーザーIDは、パフォーマンスのために優れている理由を
私の3つの理由:
- がautoのユーザー名が使用されているかどうかを確認するために、データベースへの1回の少ない旅行を節約でインクリメントすることもできます。ユーザーが
- 符号なし
INT
データ型のみを使用しない4294967295固有のID
私の3つの理由に4バイトまで可能にユーザー名まで要求するユーザ名を変更するため
- UTF-8文字セットを使用するストレージでは、1文字あたり3バイトまたは1が必要です文字あたりのようなもの
latin1
- 検索速度を最大限にするには、固定幅テーブルのある
MyISAM
テーブルを使用する必要があります。MyISAM
の固定幅テーブルでは、参照テーブルの速度と比較してが30%増加してになります。 MyISAM
テーブルレベルロックのため、テーブルが重い場合write
の場合は、パフォーマンスが遅くなります。
両方のフィールドが主キーである限り、パフォーマンスは同じになります。
それがある場合に、より良い習慣です外部キーとしてたくさん使われました – Atomble
@atombieあなたが外部キーとして使用しようとしているのであれば、私は間違いなくuserIDを使用することをお勧めします。 –
パフォーマンスは同じですが、私はUserIDを自動インクリメントプライマリキーとして使用します。
それはあなたが達成しようとしているものによって異なります。理想的には、ほとんどのWebサイトにはUserIdとUsernameの両方があり、どちらもユニークであることを意図しています。 UserIDを割り当てると、自動的に増分することができます。これにより、テーブルへの新しいエントリごとに一意のuserIDが取得され、それがあなたのために実行されます。 しかし、私はユーザーがあなたのウェブサイトにアクセスする手段としてユーザーIDを使用するように計画していないと仮定しています。
長期的に見ると、ユーザー名は自動的に増分されたID整数よりも複雑になります。 MySqlが行う比較のパフォーマンスに大きな違いはないかもしれませんが、ドメイン名はユーザー名を含む文字列ではなくID番号を比較できるという利点があります。
ユーザー名、主キーにする同等の性能を持つユーザ名でデータをフェッチ、まだいないことができるようにしたい場合は、MySQLのインデックスを見てみる
- 1. "Laravel 5.1" userIdでユーザーとプロジェクトを追加
- 2. mysqlデータベースのURL、ユーザー名とパスワード
- 3. インストール中のmysqlユーザー名
- 4. PHP/Mysqlの列imageid、catid、imagedate、userid
- 5. 遅いMySQLのパフォーマンスとスリープクエリ
- 6. MYSQLパフォーマンスとスケーラビリティのインデックス
- 7. php mysqlとin_arrayのパフォーマンス
- 8. MySQLの構文と「OR」パフォーマンス
- 9. System.Data.SqlClient.SqlException(0x80131904):無効な列名 'UserId'。\ r \ n列名が正しくない 'UserId'
- 10. MySQLサーバーのパフォーマンス
- 11. Mysql - インデックスのパフォーマンス
- 12. MySQLデータベースのパフォーマンス
- 13. mysqlのパフォーマンス
- 14. mysqlクエリのパフォーマンス
- 15. MySQLのクエリのパフォーマンス
- 16. MySQLのクエリのパフォーマンス
- 17. MysqlのInnodbとMyisamのパフォーマンスの差
- 18. JustHost Cpanel - リモートからのMySQLユーザー名/パスワードアクセス
- 19. PHPのパフォーマンスstrposのファイル名またはMySQLのクエリ
- 20. MySQLの文のパフォーマンスと最適化
- 21. MySQLのORとISNULLのパフォーマンスが悪い
- 22. MySQLのパフォーマンス:多くの行と列(MyISAM)
- 23. MySQLのパフォーマンス:生のクエリとストアドプロシージャ
- 24. MySQLのパフォーマンスと変数の微調整
- 25. MySQLの悪いパフォーマンス
- 26. EFコアMySQLのパフォーマンス
- 27. MySQLのテーブル - パフォーマンス、インデックス
- 28. パフォーマンスMysql
- 29. MySQL作成ビューとパフォーマンス
- 30. ユーザー定義関数とパフォーマンスの使用
MyISAMテーブルはトランザクションをサポートしておらず、一般的に回避する価値があります。 –
@joshua私は同意します –