TL; DR:文字列はおそらくより安全 選択し、パフォーマンスの違いは無視できるはずです。整数は、列挙型にインデックスを付ける必要がある巨大なコレクションには意味があります。 YMMV。
本当です。
これは私の意見では整数の重要な利点です。ただし、enum
の関連する値を確認する必要もあります。 変わらないでください。それを台無しにすると、ほぼ確実に大混乱を引き起こします 、これは大きな欠点です。
実際に列挙型データ型を使用している場合、それはおそらく内部的にある種の整数であるため、整数の処理は少なくて済みます。いずれにせよ、そのオーバーヘッドはごくわずかであるはずです。
私は言われたことの多くを繰り返しています、しかし多分それは他の読者を助けます。まとめ:
- 列挙値マップを混同すると、大混乱が発生します。
Declined
を想像してみてください 状態は突然Accepted
として解釈されます 、Declined
値は「2」でしたが、現在はAccepted
列挙型を並べ替えて、手動で値を割り当てるのを忘れたため...(震え ) - 文字列はより表現力豊かです
- 整数はより少ないスペースを取ります。通常、ディスク容量は重要ではありませんが、インデックス領域は高価なRAMを消費します。
- 整数の更新では、オブジェクトのサイズは変更されません。文字列の長さが大きく異なる場合は、再割り当てが必要になる場合があります。ただし、文字列のパディングとパディング係数によってこれが軽減されるはずです。
- 整数はフラグにすることができます(まだクエリできません(まだ)。残念ながら、SERVER-3518を参照してください。 )
- 整数は
$gt
でクエリできます /$lt
したがって、複雑な$or
を効率的に実装できます クエリですが、それはかなり難解な要件であり、$or
に問題はありません。 クエリ...