TL;DR:Strings sind wahrscheinlich die sichereren Auswahl, und der Leistungsunterschied sollte vernachlässigbar sein. Ganzzahlen sind sinnvoll für große Sammlungen, in denen die Aufzählung indiziert werden muss. YMMV.
Stimmt.
Dies ist meiner Meinung nach ein wesentlicher Vorteil von ganzen Zahlen. Es erfordert jedoch auch, dass Sie die zugehörigen Werte der enum sicherstellen nicht ändern. Wenn Sie das vermasseln, werden Sie mit ziemlicher Sicherheit Chaos anrichten , was ein großer Nachteil ist.
Wenn Sie tatsächlich einen Enum-Datentyp verwenden, handelt es sich wahrscheinlich intern um eine Art Ganzzahl, sodass die Ganzzahl weniger Verarbeitung erfordern sollte. In jedem Fall sollte dieser Overhead vernachlässigbar sein.
Ich wiederhole vieles von dem, was gesagt wurde, aber vielleicht hilft das anderen Lesern. Fazit:
- Das Verwechseln der Enum-Wert-Map richtet Chaos an. Stellen Sie sich Ihre
Declinedvor Zustände werden plötzlich alsAcceptedinterpretiert , weilDeclinedhatte den Wert '2' und ist jetztAcceptedweil Sie die Aufzählung neu geordnet und vergessen haben, Werte manuell zuzuweisen ... (schaudert ) - Strings sind ausdrucksstärker
- Ganzzahlen nehmen weniger Platz ein. Festplattenspeicher spielt normalerweise keine Rolle, aber der Indexspeicher verbraucht RAM, was teuer ist.
- Ganzzahlaktualisierungen ändern die Größe des Objekts nicht. Zeichenfolgen, deren Längen stark variieren, erfordern möglicherweise eine Neuzuweisung. String padding und padding factor sollten dies jedoch lindern.
- Ganzzahlen können Flags sein (noch (noch) nicht abfragbar, leider, siehe SERVER-3518 )
- Ganzzahlen können mit
$gtabgefragt werden /$ltdamit Sie komplexe$oreffizient implementieren können Abfragen, obwohl dies eine ziemlich obskure Anforderung ist und an$ornichts auszusetzen ist Anfragen...