2016-11-01 14 views
0

非常に基本的なデータベース設計の質問:EMPLOYEE_NAME(VARCHAR)、EMPLOYEE_ID(INT)、Employee_Birthday(INT):のMySQLのInnoDBインデックス混乱

私は、次の列を持つ非常に大きなテーブルを作成しています。

私の多くのクエリがこの列の値に基づいてSELECT句とWHERE句を使用するため、Employee_IDに対して単一の列bツリーインデックスを作成したいと考えています。

作成したEmployee_IDは更新しませんが、私は頻繁に新しい従業員をこのテーブルに挿入します。

索引付けされた列を含む行を追加すると、索引付けしない場合と比較して追加コストがかかりますか?または、追加コストは既存の行を更新する場合にのみ適用されますか?

+0

データベース設計に関する質問は、dba.stackexchange.comにより適切です。 – Barmar

答えて

1

インデックスの作成を評価するとき、KEYの質問は次のとおりです。このテーブルは、クエリまたはINSERTIONSのために大部分はアクセスされますか。また、という非常に大きなテーブルの意味を指定する必要があります(従業員について話しているので、テーブルがホストしていると推測します。おそらく100Kレコード未満です)。各SELECTに対して何千ものINSERTがあると予想される場合は、索引なしで行ってみてください。一方、主にテーブルを照会する場合は、カラムにインデックスを設定すると、Employee_IDが表示されます。

2

標準を作成するインデックスは、標準SELECTsUPDATEs、およびDELETEsに基づいています。多くのことを心配しないでくださいINSERTs; 1つのINSERTのオーバヘッドは、他のオペレーションのスピードアップよりもずっと少ない。

InnoDBの場合、常にPRIMARY KEYが存在するため、あなたに役立つものもあります。