2011-07-13 6 views

答えて

3

実際にアプリケーションの要件に基づいているため、質問はディスカッションのように思えます。しかし、私は一般的な答えを与える理由は、UserIDがパフォーマンスのために良いです。ユーザーIDは、パフォーマンスのために優れている理由を

私の3つの理由:

  1. がautoのユーザー名が使用されているかどうかを確認するために、データベースへの1回の少ない旅行を節約でインクリメントすることもできます。ユーザーが
  2. 符号なしINTデータ型のみを使用しない4294967295固有のID

私の3つの理由に4バイトまで可能にユーザー名まで要求するユーザ名を変更するため

  • ができます:

    1. UTF-8文字セットを使用するストレージでは、1文字あたり3バイトまたは1が必要です文字あたりのようなものlatin1
    2. 検索速度を最大限にするには、固定幅テーブルのあるMyISAMテーブルを使用する必要があります。 MyISAMの固定幅テーブルでは、参照テーブルの速度と比較してが30%増加してになります。
    3. MyISAMテーブルレベルロックのため、テーブルが重い場合writeの場合は、パフォーマンスが遅くなります。
  • +0

    MyISAMテーブルはトランザクションをサポートしておらず、一般的に回避する価値があります。 –

    +0

    @joshua私は同意します –

    1

    両方のフィールドが主キーである限り、パフォーマンスは同じになります。

    +0

    それがある場合に、より良い習慣です外部キーとしてたくさん使われました – Atomble

    +0

    @atombieあなたが外部キーとして使用しようとしているのであれば、私は間違いなくuserIDを使用することをお勧めします。 –

    1

    パフォーマンスは同じですが、私はUserIDを自動インクリメントプライマリキーとして使用します。

    0

    それはあなたが達成しようとしているものによって異なります。理想的には、ほとんどのWebサイトにはUserIdとUsernameの両方があり、どちらもユニークであることを意図しています。 UserIDを割り当てると、自動的に増分することができます。これにより、テーブルへの新しいエントリごとに一意のuserIDが取得され、それがあなたのために実行されます。 しかし、私はユーザーがあなたのウェブサイトにアクセスする手段としてユーザーIDを使用するように計画していないと仮定しています。

    0

    長期的に見ると、ユーザー名は自動的に増分されたID整数よりも複雑になります。 MySqlが行う比較のパフォーマンスに大きな違いはないかもしれませんが、ドメイン名はユーザー名を含む文字列ではなくID番号を比較できるという利点があります。

    ユーザー名、主キーにする同等の性能を持つユーザ名でデータをフェッチ、まだいないことができるようにしたい場合は、MySQLのインデックスを見てみる

    Here is a good article on indexing.

    関連する問題