Ist es in MySQL besser, immer Nullen zuzulassen, wenn Sie nicht wissen, dass ein Feld erforderlich ist, oder immer zu verwenden, Not Null
wenn Sie nicht wissen, dass ein Feld Nullen enthält? Oder spielt es keine Rolle?
Ich weiß, dass in einigen Not Null
DBMSs so viel wie möglich verwendet wird, da für das Zulassen von Nullen ein zusätzliches Bit (oder Byte?) Pro Datensatz erforderlich ist, um den Nullstatus zu speichern.
NULL
genau dann zulassen, wenn derNULL
Wert eine Interpretation für das Objekt hat, das Sie modellieren.Antworten:
In den meisten DBs ist eine
NOT NULL
Spalte in Bezug auf gespeicherte Daten aus dem angegebenen Grund effizienter und auch effizienter abzufragen und zu indizieren. Wenn Sie also NULL-Werte in einer Spalte zulassen möchten, sollten Sie sie ausdrücklich nicht zulassen.Es wird eine leichte Auswirkung auf die Leistung geben, da die zusätzlichen
NOT NULL
Einschränkungen möglicherweise für jede Zeile überprüft werden müssen, die Sie mit INSERT oder UPDATE beeinflussen. Da die meisten Datenbanken jedoch relativ schreib- und leselastig sind, ist dies wahrscheinlich kein Problem (das Wenige) Es ist unwahrscheinlich, dass die in Anspruch genommene zusätzliche Zeit überhaupt bemerkt wird, da es sich um eine CPU-gebundene Operation handelt, bei der der Rest der Einfüge- / Aktualisierungsoperation IO-gebunden ist und somit einen viel bedeutenderen Flaschenhals darstellt msgstr "Datenüberprüfung, damit Ihr Code (oder der Code anderer Personen) nicht versehentlich NULL setzen kann, wenn sie von einem anderen Code nicht erwartet werden, und so möglicherweise falsche Ergebnisse bei deren Vorhandensein liefern.Edit: Wie Peter in seinem Kommentar hervorhebt, handelt es sich bei den obigen Ausführungen um einen Generalismus, der möglicherweise nicht für alle DMBSs gilt, obwohl ich mir ziemlich sicher bin, dass dies für mysql und mssql gilt. Andere Komplikationen in diesem Bereich können Features wie Sparse-Tabellen (wie sie beispielsweise in MSSQL 2008 implementiert sind) sein, die die Leistungsdynamik von (nicht) nullwertfähigen Spalten verändern.
quelle
Sie sollten sich bei dieser Entscheidung von Ihrem Schemaentwurf und den Anwendungsanforderungen leiten lassen. Die Leistungsunterschiede sind in den meisten Fällen wahrscheinlich in keiner Weise erkennbar.
quelle