1690 Stimmen

Was ist der Unterschied zwischen varchar und nvarchar?

Ist es nur, dass nvarchar unterstützt Multibyte-Zeichen? Wenn das der Fall ist, gibt es dann wirklich einen Grund, abgesehen von Speicherproblemen, für die Verwendung von varchars ?

8voto

Rafid Punkte 17101

Ich habe mir die Antworten angeschaut und viele scheinen zu empfehlen, die nvarchar en varchar Da der Speicherplatz kein Problem mehr darstellt, kann es nicht schaden, Unicode zu aktivieren, um etwas zusätzlichen Speicherplatz zu gewinnen. Nun, das stimmt nicht immer, wenn Sie einen Index auf Ihre Spalte anwenden wollen. SQL Server hat ein Limit von 900 Bytes für die Größe des Feldes, das Sie indizieren können. Wenn Sie also eine varchar(900) können Sie sie immer noch indizieren, aber nicht varchar(901) . Mit nvarchar wird die Anzahl der Zeichen halbiert, so dass Sie bis zu nvarchar(450) . Wenn Sie also zuversichtlich sind, brauchen Sie keine nvarchar empfehle ich nicht, sie zu verwenden.

Im Allgemeinen empfehle ich bei Datenbanken, sich an die Größe zu halten, die Sie benötigen, denn Sie können sie jederzeit erweitern. Ein Arbeitskollege meinte zum Beispiel einmal, dass es nicht schadet, wenn man nvarchar(max) für eine Spalte, da wir überhaupt kein Problem mit der Speicherung haben. Später, als wir versuchten, einen Index auf diese Spalte anzuwenden, lehnte SQL Server dies ab. Wenn er jedoch auch mit varchar(5) Wir hätten sie später einfach auf den von uns benötigten Umfang erweitern können, ohne ein solches Problem zu haben, das uns dazu zwingen wird, einen Feldmigrationsplan zu erstellen, um dieses Problem zu lösen.

7voto

Allan F Punkte 1816

Jeffrey L Whitledge mit ~47000 Reputationspunkten empfiehlt die Verwendung von nvarchar

Solomon Rutzky mit ~33200 Reputationspunkten empfiehlt: Verwenden Sie NICHT immer NVARCHAR. Das ist eine sehr gefährliche und oft kostspielige Einstellung / Vorgehensweise.

Was sind die wichtigsten Leistungsunterschiede zwischen den SQL Server-Datentypen varchar und nvarchar?

https://www.sqlservercentral.com/articles/disk-is-cheap-orly-4

Was wählt ein lernender Sql-Server-Datenbankentwickler, wenn beide Personen ein so hohes Ansehen genießen?

In den Antworten und Kommentaren wird häufig vor Leistungsproblemen gewarnt, wenn Sie Ihre Auswahl nicht konsequent treffen.

Es gibt Kommentare pro/contra nvarchar für die Leistung.

Es gibt Kommentare pro/contra varchar für die Leistung.

Ich habe eine besondere Anforderung für eine Tabelle mit vielen hundert Spalten, was an sich wahrscheinlich ungewöhnlich ist ?

Ich entscheide mich für varchar, um die 8060-Byte-Grenze für Tabellendatensätze von SQL*server 2012 nicht zu überschreiten.

Die Verwendung von nvarchar überschreitet für mich diese 8060 Byte Grenze.

Ich denke auch, dass ich die Datentypen der verwandten Codetabellen an die Datentypen der primären zentralen Tabelle anpassen sollte.

Ich habe die Verwendung von varchar-Spalten an meinem Arbeitsplatz, der südaustralischen Regierung, durch erfahrene Datenbankentwickler gesehen, wo die Anzahl der Tabellenzeilen mehrere Millionen oder mehr betragen wird (und nur sehr wenige nvarchar-Spalten, wenn überhaupt, in diesen sehr großen Tabellen), so dass vielleicht das erwartete Datenzeilenvolumen Teil dieser Entscheidung ist.

6voto

Paul Punkte 4058

Ich muss an dieser Stelle sagen (mir ist klar, dass ich mir wahrscheinlich eine Standpauke anhören muss!), dass der einzige Zeitpunkt, an dem NVARCHAR ist eigentlich mehr nützlich (beachten Sie die mehr dort!) als VARCHAR ist, wenn alle Sortierreihenfolgen auf allen abhängigen Systemen und in der Datenbank selbst gleich sind...? Wenn dies nicht der Fall ist, muss die Kollationskonvertierung ohnehin erfolgen und macht somit VARCHAR genau so lebensfähig wie NVARCHAR .

Hinzu kommt, dass einige Datenbanksysteme, wie z. B. SQL Server (vor 2012) haben eine Seitengröße von ca. 8K. Wenn Sie also durchsuchbare Daten speichern wollen, die nicht in einer Datei wie TEXT o NTEXT Feld dann VARCHAR bietet den vollen Platz von 8k, während NVARCHAR bietet nur 4k (doppelte Bytes, doppelter Platz).

Zusammenfassend lässt sich sagen, dass die Verwendung von beidem davon abhängt:

  • Projekt oder Kontext
  • Infrastruktur
  • Datenbank-System

6voto

Pradeep Kesharwani Punkte 1480

Folgen Sie Unterschied zwischen Sql Server VARCHAR und NVARCHAR Datentyp . Hier können Sie auf sehr anschauliche Weise sehen.

Im Allgemeinen speichert nvarchar Daten als Unicode. Wenn Sie also mehrsprachige Daten (mehr als eine Sprache) in einer Datenspalte speichern möchten, benötigen Sie die Variante N.

2voto

Rinoy Ashokan Punkte 1343

nvarchar ist sicher in der Anwendung im Vergleich zu varchar um unseren Code fehlerfrei zu machen (Typ-Fehlanpassung), denn nvarchar erlaubt auch Unicode-Zeichen. Wenn wir where Bedingung in der SQL Server-Abfrage und wenn wir die = Operator, wird es manchmal einen Fehler geben. Der wahrscheinliche Grund dafür ist, dass unsere Mapping-Spalte in varchar . Wenn wir es definiert haben in nvarchar darf dieses Problem nicht auftreten. Dennoch bleiben wir bei varchar und dieses Problem zu vermeiden, verwenden wir besser LIKE Schlüsselwort und nicht = .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X