2010-12-30 13 views
0

Iテーブルを持っている:Mysqlはこのテーブルのmyisamを使用できますか?

ID(自動インクリメント、INT)、(CHAR(5))を通過する、電子メール(VARCHAR(80))

これに使用されるように設定されている:

新規ユーザーごとに行を追加する(高負荷)。

メールアドレスを追加するアカウントを更新します。

ユーザーがIDを忘れた場合、彼らは自分のメールアドレスを入力することができますし、それがIDを返します)

非常に非常に少数の削除(通常はバルクで週に一度)があります。この比率は、約70%の挿入、25%の電子メールの更新、5%の電子メールアドレスによる検索です。

あなたは何と言うでしょうか?

IDがプライマリキーになりますが、電子メールをキーとして設定する必要がありますか?

+0

はあなたが使用するどのようなストレージエンジンを使用するか、テーブル構造を求めている大きな違いを作るのに十分に起こるように聞こえますか? –

+0

私は、電子メールでインデックスを付けるかどうかという質問は正しいと思いますか? –

+0

そのすべてのビット。ストレージエンジン、インデックスとして設定するものはこれにも依存しています... – David19801

答えて

0

InnoDBに行けば、行レベルのロックを得ることができます。 「電子メール」がWHERE句に表示される場合は、パフォーマンス上の理由から最小限のインデックスを作成する必要があります。

+0

hmmm ...ええ、ダゴンはポイントを作っています...電子メールのインデックスを付けるかどうかは、私が推測するパスワードの紛失頻度に依存します。私はおそらくそれを個人的に索引付けします。 – codemonkey

+0

「最小限の索引付け」に設定するにはどうすればよいですか?また、インデックス作成とインデックス作成のコストはいくらですか? – David19801

+0

コストは、読み取り頻度と書き込み頻度によって異なります。特定のコストで、特定のセットアップでテストできます。しかし、すべての場合、インデックスは、読み込み時間を短縮しながら挿入にオーバーヘッドを追加します。私が「最小限インデックスされている」と言ったとき、私は特別な種類のインデックスを指していませんでした。データベース内のフィールドを正しく索引付けすることは非常に大きなトピックです。かなり良いmysqlのパフォーマンスブック、http://amzn.to/gxyQLHがあります。 – codemonkey

0

5文字のパスワードが非常に低く、ハッシュ化され、塩漬けされている可能性があります。したがって、32文字になる可能性があります。 メールは80文字を超える可能性があります。

メールのインデックス登録はメールで検索をスピードアップするだろうが、それは文句を言わない

+0

@ david19801 - インデックスタイプはありますが、「最小限のインデックス」というものはありません。唯一のコストは少しのスペースですが、インデックスはクエリの速度を遅くする可能性があります。初心者の間違いはすべてをインデックス化しています。 phpmyadmin、またはこれまでに使用したものは、索引がどのくらいのスペースを取っているかを示します。 –

関連する問題